En ExtJS, ¿cómo cargo una tienda cuando visualizo una cuadrícula? Quiero que la tienda solo cargue cuando se muestra la cuadrícula (el usuario hace clic en un botón para mostrar la cuadrícula, por lo que es inútil cargar la tienda de antemano). Probé el oyente afterrender
pero muestra la máscara de carga en la ubicación incorrecta y el oyente afterlayout
vuelve a cargar la cuadrícula cada vez que se cambia el tamaño de la cuadrícula.En ExtJS, ¿cómo cargo una tienda cuando visualizo una cuadrícula?
Respuesta
Esta es una de esas cosas que pueden ser un poco difíciles de lograr porque le daban demasiado al navegador para hacer a la vez (especialmente notable en IE).
Me gusta usar una combinación de defer para permitir que el navegador se recupere lo suficiente como para procesar las cosas correctamente.
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
}
});
Jugando con el valor de la demora/diferir debería darle los resultados deseados. La cantidad de tiempo que tendrá que retrasar/diferir depende de cuán compleja sea su cuadrícula y qué tan rápido sea el navegador.
Recuerde también quitar la máscara cuando la carga de su Tienda se haya completado.
listeners: {
load: function(){
yourGrid.body.unmask();
}
}
NOTA: A pocos aclaraciones a la respuesta de Lloyd - no es necesario para establecer autoLoad a falso, ya que es el valor por defecto (es decir: no establecido en absoluto) y parece que a partir su descripción que desea utilizar el método de carga de tiendas, en lugar de volver a cargar.
Puede establecer autoLoad en falso para la tienda y simplemente llame a store.reload(); cuando el usuario hace clic en el botón para mostrar la cuadrícula.
Esto funciona, pero significa que la red no es responsable de su propia tienda. Está bien si compartes una tienda en varios componentes, pero para una sola grilla, prefiero que la grilla sea responsable de la carga de la tienda. –
¿Ha considerado la manipulación del evento activate
? Puede agregar un controlador de eventos que carga datos en el evento activate
y luego se elimina.
this.on('activate', function(){
this.un('activate', arguments.callee);
this.store.load();
}, this);
Aquí this
refiere a GridPanel
.
- 1. ExtJS 4 - ¿Cómo editar condicionalmente una celda en una cuadrícula?
- 2. datos Recarga de una tienda en ExtJS 4
- 3. mostrar imagen en una cuadrícula usando extjs
- 4. Creando una cuadrícula dinámica con ExtJS
- 5. Vuelva a insertar un registro en una extJS tienda
- 6. Extjs sincronizar una tienda me da una URL es un error indefinido en condiciones específicas
- 7. tienda Extjs encontrar todos
- 8. ¿Cómo leer y establecer un valor de una celda específica en una cuadrícula ExtJS?
- 9. extjs 4.1 ¿Cuándo uso un proxy en una tienda y cuando estoy en un modelo?
- 10. EXTJS + Actualización de una tienda con la ID de la base de datos después de guardar una cuadrícula
- 11. Ordenando una columna basada en otra columna en la cuadrícula ExtJs 4.1
- 12. Cómo recuperar JSON matriz de datos de ExtJS tienda
- 13. Recargar una tienda json con nuevos parámetros ExtJs Ext.data.JsonStore
- 14. Cómo solo cargo una imagen cuando el usuario se desplaza
- 15. Cómo filtrar múltiples columnas de cuadrícula extjs?
- 16. Ocultar cuadrícula ExtJS Columna encabezado
- 17. Grupo de radio en ExtJS Editor Cuadrícula/Cuadrícula
- 18. deshabilitar filas en la cuadrícula extjs
- 19. Agregar botón a la cuadrícula en ExtJs
- 20. Columna ExtJS 4 "Renderer" en la cuadrícula
- 21. cómo usar el filtro en la tienda ExtJs?
- 22. Actualizar o recargar tienda de ExtJs ComboBox
- 23. PyQt: ¿Cómo visualizo una imagen correctamente?
- 24. Envío de un formulario + cuadrícula en ExtJS 4
- 25. Extjs 4.0 tienda - cómo encontrar campos en la tienda (o modelo)
- 26. ExtJS: devolver filas/registros totales en la tienda json
- 27. ¿Cómo visualizo el símbolo de copyright en una página XPage?
- 28. ExtJS 4 - ¿Eventos de celdas de cuadrícula?
- 29. ¿Cómo convierto una matriz numpy a (y visualizo) una imagen?
- 30. ¿Cómo ocultar filas en ExtJS GridPanel?
Este es un buen enfoque, aunque solo aplicaría enmascaramiento si realmente lo necesita. Si se carga demasiado rápido, la máscara puede parecer un parpadeo. Además, asegúrese de desenmascarar en el controlador de eventos de carga de la tienda. El ejemplo de combinación de navegador de diseño "Pestañas con diseños anidados" usa esto en el método de renderizado de la carga de la tienda en su cuadrícula interna: http://www.extjs.com/deploy/dev/examples/layout-browser/layout-browser.html –
Estoy de acuerdo con los comentarios de Brian: olvídate de hacer esto si tus datos vuelven en menos de ~ 5 segundos. El usuario nunca lo notará. Agregué un tidbit sobre quitar la máscara, gracias. –
Bueno ... Solo me pregunto, ¿para qué sirve 'delay: 200'? ¿Es eso necesario? – Gugan