In ExtJS, come carico un negozio quando visualizzo una griglia? Voglio che il negozio carichi solo quando viene visualizzata la griglia (l'utente fa clic su un pulsante per mostrare la griglia, quindi è inutile caricare in anticipo il negozio). Ho provato il listener afterrender
ma esegue il rendering della maschera di carico nella posizione errata e il listener afterlayout
ricarica la griglia ogni volta che la griglia viene ridimensionata.In ExtJS, come carico un negozio quando visualizzo una griglia?
risposta
Questa è una di quelle cose che può essere un po 'difficile da realizzare perché stavano dando al browser troppo da fare in una volta (particolarmente evidente in IE).
Mi piace utilizzare una combinazione di differimento per consentire al browser di recuperare il tempo necessario a eseguire correttamente il rendering.
var grid = new Ext.grid.GridPanel({
...,
listeners : {
render : function(grid){
grid.body.mask('Loading...');
var store = grid.getStore();
store.load.defer(100, store);
},
delay: 200
}
});
Giocare con il valore di ritardo/rinvio dovrebbe fornire i risultati desiderati. Il periodo di tempo necessario per ritardare/rinviare dipende dalla complessità della tua griglia e dalla velocità del browser.
Ricordarsi inoltre di rimuovere la maschera al termine del caricamento del negozio.
listeners: {
load: function(){
yourGrid.body.unmask();
}
}
NOTA: A pochi chiarimenti alla risposta da Lloyd - non è necessario impostare autoLoad false, perché questo è il valore di default (cioè: non impostare affatto) e suona come da la tua descrizione che vorresti utilizzare il metodo di caricamento dei negozi, invece di ricaricare.
È possibile impostare autoLoad su false per il negozio e chiamare semplicemente store.reload(); quando l'utente fa clic sul pulsante per mostrare la griglia.
Questo funziona, ma significa che la rete non è responsabile del proprio negozio. Va bene se si condivide un negozio su più componenti, ma per una singola griglia, preferirei che la rete fosse responsabile del caricamento del negozio. –
Hai considerato la gestione dell'evento activate
? È possibile aggiungere un gestore eventi che carica i dati sull'evento activate
e quindi rimuove sé stesso.
this.on('activate', function(){
this.un('activate', arguments.callee);
this.store.load();
}, this);
Qui this
si riferisce a GridPanel
.
- 1. In extjs Come associare i dati del negozio alla griglia
- 2. come ottenere il response.responseText server dopo carico negozio extjs 4
- 3. Ricaricamento dati da un negozio a ExtJS 4
- 4. ExtJS negozio trovare tutte
- 5. EXTJS + Aggiornamento di un negozio con l'ID del database dopo aver salvato una griglia
- 6. Come utilizzare la portata in funzione del carico negozio in ExtJS
- 7. ExtJS 4 - Come modificare condizionatamente una cella in una griglia?
- 8. visualizza l'immagine in una griglia usando extjs
- 9. Come associare correttamente una formula con un negozio in Sencha ExtJs v6?
- 10. ExtJS Conservare problema del carico di callback
- 11. Come leggere e impostare un valore di una cella specifica in una griglia ExtJS?
- 12. Leggi messaggio ExtJS da Ajax negozio
- 13. Come utilizzare lo stesso negozio con URL diversi in extjs
- 14. ExtJS 4.1 Scorrimento a griglia infinita non funziona con negozio dinamico usando loadData
- 15. Come posso aggiungere numeri di riga a una griglia ExtJS?
- 16. Come aggiungere righe vuote alla griglia ExtJS?
- 17. Griglia Pannello barre di scorrimento in ExtJS 4 non lavora
- 18. Invio di un modulo + griglia in ExtJS 4
- 19. Ricaricamento di un negozio json con nuovi parametri ExtJs Ext.data.JsonStore
- 20. Ordinamento di una colonna in base a un'altra colonna nella griglia di ExtJs 4.1
- 21. Come impedire alla griglia di extjs di scorrere quando si fa clic su una cella?
- 22. errore griglia di ExtJS, i dati JSON non viene visualizzata
- 23. Consumo di date JSON in un pannello griglia EXTJs
- 24. Come esportare i dati della griglia di extjs in Excel?
- 25. ExtJS 4,0 negozio - come trovare i campi nel negozio (o il modello)
- 26. Come impostare il valore nella cella nella griglia in extjs
- 27. Come visualizzo una connessione Matrix con Matplotlib?
- 28. Aggiornamento di un campo in un record dyanamically in extjs
- 29. ExtJS Griglia Elimina riga - Getting Row
- 30. Crea una griglia di azione Extjs 4 con testo?
Questo è un buon approccio, anche se applicherei il mascheramento solo se trovi che ne hai effettivamente bisogno. Se carica troppo velocemente, la maschera potrebbe apparire come uno sfarfallio. Inoltre, assicurati di smascherare il gestore dell'evento di caricamento del negozio. L'esempio di combinazione del browser di layout "Schede con layout annidati" utilizza questo metodo di rendering del caricamento del negozio nella sua griglia interna: http://www.extjs.com/deploy/dev/examples/layout-browser/layout-browser.html –
Sono d'accordo con i commenti di Brian - dimentica di farlo se i tuoi dati tornano in meno di ~ 5 secondi. L'utente non lo noterà mai. Aggiunto un bocconcino sulla rimozione della maschera, grazie. –
Bello. Mi chiedo, a cosa serve "delay: 200"? È necessario? – Gugan