In ExtJS potete generare ComboBox che carica i dati dall'assistente. Potete anche codificare in moda da caricare i nuovi dati dall'assistente in risposta ad un evento come la selezione cambiante di un altro ComboBox. Tuttavia inoltre significa che la filtrazione � fatta a distanza che � lenta.

In ExtJS ComboBox la filtrazione automatica � una possibilit� abile dove gli articoli di ComboBox sono filtrati automaticamente per mostrare soltanto ai valori quali fiammiferi a macchina il testo voi ha scriv finora. Pu� inoltre gli auto-riempie il resto per. Questa possibilit� potente viene ad un prezzo per il modo a distanza. Ogni volta che i dati sono filtrati trasmettendo una domanda all'assistente che pu� essere pi� lento di locale interroghi.

In molti casi di uso i dati completi sono gi� dal lato del cliente, andato a prendere durante il caricamento iniziale del ComboBox. La filtrazione successiva pu� essere fatta facilmente dal lato del cliente. Vediamo come possiamo risolverli.

Aggiornamento: Inoltre ho archivato un difetto nella tribuna di ExtJS eventualmente per comprendere la funzionalit� nel centro con le soluzioni suggerite. I particolari di difetto � stato fornito all'estremit� di questo alberino.

Il metodo intuitivo a questo problema � di caricare il ComboBox su un alimentatore di evento dopo la regolazione dei baseParams del deposito con i parametri adatti. Ci� funziona nel modo a distanza ma non nel modo locale. Ora volete regolare il ComboBox al modo locale perch� volete realizzare la filtrazione locale, di destra?

La soluzione � lontano da evidente. Nel modo locale ComboBox rimuove i filtri del deposito che a sua volta sostituisce i dati nel deposito con immagazzinata ed ovviamente stantio, fotografia istantanea. Per risolvere questo dovete denominare combo.store.updateSnapshot () dopo che la chiamata di combo.store.load ().

Ora dove potete ottenere questa funzione? Oh s�


Ext.data.Store.prototype.updateSnapshot = funzione () {
    this.snapshot = this.data;
}

Il caricamento su richiesta � compiuto mantenendo i dati nel modo locale ed allora caricando il deposito una volta (usi un booleano per controllare) sull'alimentatore di evento di beforequery. Dovete usare la funzione del updateSnapshot () dopo il carico come spiegato sopra.

Usi i casi
Lascili primo sguardo ai casi di uso che sono sicuro che molti accosentiranno con.

1. Voglio caricare un ComboBox a richiesta. Ho numero delle colonne molto grande in una griglia, di cui ciascuno ha un ComboBox da contribuire a selezionare un valore. Non voglio caricare tutti i dati upfront come quello rallenta il caricamento iniziale. Cos� voglio caricare i dati quando il ComBox a discesa � scattato. Posso fare facilmente quello nel modo a distanza ma il lato negativo � che la funzionalit� di filtrazione chiede l'assistente filtrare. I dati che ho andato a prendere sono fissi e sono gi� sul cliente, cos� l� sono giustificazione per la seccatura dell'assistente.

2. Un piano d'azione alternativo � quando avete un ComBox dinamicamente caricato. Ancora vorreste fare la filtrazione locale, quando i dati completamente sono stati caricati, per la migliore prestazione. Ci� potrebbe essere quella che potete migliorare il socio con.

Difetto
La mia soluzione era di mantenere il ComboBox nel modo locale ma di caricare il deposito su primo accesso. Ci� funziona perfettamente nel modo a distanza per il caso dinamicamente di carico. Tuttavia non funziona quando il modo � locale. Nel modo locale il doQuery () denomina il clearFilter () che sostituisce i nuovi dati nel deposito con i vecchi dati stantii di fotografia istantanea.

Che cosa � necessario � di sostituire i dati di fotografia istantanea in questo caso con i dati correnti nel deposito dopo una riuscita ricarica.

Il difetto reale � che in questo caso il clearFilter () non dovrebbe sostituire il deposito con la vecchia fotografia istantanea quando il deposito � stato rinfrescato da una chiamata per caricare.

Soluzione
La mia soluzione era di generare un metodo per questa in ComboBox:
Codice:


Ext.data.Store.prototype.updateSnapshot = funzione () {
    this.snapshot = this.data
}

Ed allora denomini questo metodo dopo il carico del ComboBox.

La soluzione funziona ma non sono completamente per quanto non sia felice elegante. Restare in attesa per sentire una migliore idea nella soluzione del questo problema.

Pensieri supplementari
Penso che ci dovrebbe essere un senso per clearFilter () riconoscere quando i nuovi dati sono stati caricati contro quando i dati filtrati sono stati caricati per i vecchi dati. Carico di entrambi gli usi di casi ().
La soluzione potrebbe essere un nuovo parametro di configurazione da caricare () che il clearFilter () cerca e processi, se disponibile.