Foro

Cómo cargar un Store con filtrado remoto?...

0
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:


  1. //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..
  2.  
  3.              select:function(t,record){
  4.  
  5.               var a = record.parentNode.raw.name; // capturo el nodo pais
  6.                var b = record.raw.name; // capturo el nodo para DivPolAdministrativa
  7.  
  8.         var store = Ext.create('Ext.data.JsonStore', {
  9.             model: 'MyGrid',
  10.                proxy: {
  11.                             type: 'ajax',
  12.                             url: 'SeleccionDeArchivos_Json.php',
  13.                             reader: {
  14.                                 type: 'json',
  15.                                 root: 'MigrInt'
  16.                             },
  17.  
  18.                         },
  19.  
  20.             remoteFilter: true, // esta línea la agregué en mi intento de ahor, pero no hace nada
  21.             autoLoad: true,
  22.         });
  23.          
  24.       // Todo el Store.On('load'... funciona bien, pero como digo filtra lo que ya
  25.       // se ha cargado en el Store
  26.  
  27.         store.on('load',function(){
  28.             store.filterBy(function(record,id){
  29.             return record.get('Pais')== a && record.get('DivPola') == b;
  30.             });
  31.  
  32.         });
  33.  
  34. //Lo que viene no me ha servido... El Store carga todo el contenido devuelto por el Servidor
  35.  
  36. //MiFiltro();
  37. //*************************
  38. function MiFiltro(){
  39.                              
  40.                               console.log(a,b);
  41.                               //Pais es un campo en el Store... igual necesito la combinación
  42.                               //de Pais y Divpola que es otro campo en el Store ('Necesito'
  43.                               // me devuelve... Nada!
  44.                               Necesito=Ext.getCmp(‘Pais’).getValue();
  45.                               store.remoteFilter=false;
  46.                               store.clearFilter();
  47.                               store.remoteFilter=true;
  48.                               store.filter('Pais', Necesito);
  49.                                
  50.             };
  51.  
  52. //*************************

 



¿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.