Cómo cargar un Store con filtrado remoto?...
Hola amigos,
He avanzado mucho en una pequeña aplicación que estoy impelementando con ExtJs 4 y que, en lo sustantivo, ya está terminada. Pero ahora me gustaría optimizar una operación de filtrado que hago para llenar un grid. El filtro se ejecuta bien... pero filtra las coincidencias en el Store a partir de todo el contenido (que puede ser mucho) devuelto por el servidor. Lo que quisiera hacer es que el filtro se aplique en el servidor y que este llene el Store sólo con lo que se necesita.
Gracias.
Esta es la parte de código en que quisiera optimizar:
He avanzado mucho en una pequeña aplicación que estoy impelementando con ExtJs 4 y que, en lo sustantivo, ya está terminada. Pero ahora me gustaría optimizar una operación de filtrado que hago para llenar un grid. El filtro se ejecuta bien... pero filtra las coincidencias en el Store a partir de todo el contenido (que puede ser mucho) devuelto por el servidor. Lo que quisiera hacer es que el filtro se aplique en el servidor y que este llene el Store sólo con lo que se necesita.
Gracias.
Esta es la parte de código en que quisiera optimizar:
- //Aquí comienzo el listener que tengo en mi TreePanel: Al seleccionar un item bajo el nodo paises del TreePanel se ejecutan //las acciones que terminan por poblar el gripPanel de acuerdo a los parámetros de filtro, pero el Store ya se ha cargado con //toodo el contenido devuelto por el servidor, por eso quiero que el filtro se ejecute en el servidor y que la respuesta de ajax //ya venga filtrada..
-
- select:function(t,record){
- var a = record.parentNode.raw.name; // capturo el nodo pais
- var b = record.raw.name; // capturo el nodo para DivPolAdministrativa
- var store = Ext.create('Ext.data.JsonStore', {
- model: 'MyGrid',
- proxy: {
- type: 'ajax',
- url: 'SeleccionDeArchivos_Json.php',
- reader: {
- type: 'json',
- root: 'MigrInt'
- },
- },
- remoteFilter: true, // esta línea la agregué en mi intento de ahor, pero no hace nada
- autoLoad: true,
- });
- // Todo el Store.On('load'... funciona bien, pero como digo filtra lo que ya
- // se ha cargado en el Store
- store.on('load',function(){
- store.filterBy(function(record,id){
- return record.get('Pais')== a && record.get('DivPola') == b;
- });
- });
- //Lo que viene no me ha servido... El Store carga todo el contenido devuelto por el Servidor
- //MiFiltro();
- //*************************
- function MiFiltro(){
- console.log(a,b);
- //Pais es un campo en el Store... igual necesito la combinación
- //de Pais y Divpola que es otro campo en el Store ('Necesito'
- // me devuelve... Nada!
- Necesito=Ext.getCmp(‘Pais’).getValue();
- store.remoteFilter=false;
- store.clearFilter();
- store.remoteFilter=true;
- store.filter('Pais', Necesito);
- };
- //*************************
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.