Se que no he tenido la suerte, y quizá la habilidad para hacer las preguntas adecuadas, de convocar su atención y despertar en ustedes el ánimo de responderme, pero como no me queda más que seguir pidiendo ayuda aquí estoy otra vez y sin ánimo de molestarles.
Necesito filtrar items del dataStore para desplegar las coincidencias en un grid, mis condiciones de filtro las obtengo al seleccionar un nodo de treepanel usando las siguientes variables:
Código:
yvar a = record.parentNode.raw.name;
Código:
Hasta ahora he probado infinidad de ejemplos que he encontrado en la red, pero no consigo que nada me funciones... Por ejemplo esto:var b = record.raw.name;
Código:
Que adaptado a mi aplicación dejo como:var store = Ext.data.StoreManager.lookup('PersonStore'); var peoplefilter = new Ext.util.Filter({ property: 'lastname', value: 'son', anyMatch: true, caseSensitive: false, root: 'data' }); store.filter(peoplefilter);
Código:
Y en la consola me entrega:var store_sebas = Ext.data.StoreManager.lookup('MigrIntStore'); var peoplefilter = new Ext.util.Filter({ property: 'DivPola', value: 'División Administrativa Mayor-BO', anyMatch: true, caseSensitive: false, root: 'data' }); store_sebas.filter(peoplefilter); console.log(store_sebas);
Código:
El ejemplo que sigo, propone usar una función para trabajar con filtros más complejos:constructor {initialConfig: Object, property: "DivPola", value: "División Administrativa Mayor-BO", anyMatch: true, caseSensitive: false…}anyMatch: truecaseSensitive: falsefilter: function (item) {arguments: nullcaller: nulllength: 1name: ""prototype: Object__proto__: function Empty() {}<function scope>filterFn: function (item) {initialConfig: Objectproperty: "DivPola"root: "data"value: "División Administrativa Mayor-BO"__proto__: Ext.util.Filter#constructor
Código:
Pero en dónde debería llamar esta función?... al menos si me ayudan con esto podría seguir buscando la manera para continuar...var store = Ext.data.StoreManager.lookup('PersonStore'); var peoplefilter = new Ext.util.Filter({ filterFn: function(item) { return item.data.lastname.substr(0, 2)=='Mc' ? true : false } });
Igual dejo el código en dónde llamo y lleno el gridPanel:
Código:
var MyTree_01 = Ext.create('Ext.tree.Panel', { title:"Mi Treepanel", itemId: 'My_TreePanel_01', region: 'center', width: '40%', height: 200, store: store, style: 'margin: 2px', border:3, listeners:{ //Listeners para cada nodo del treePanel select:function(t,record) { a = record.parentNode.raw.name; // capturo el nodo pais b = record.raw.name; // capturo el nodo para DivPolAdministrativa console.log(store_Tabs); console.log(' "a" vale :', a); console.log('y "b" vale :', b); if (a != " "){ // Prueba para ver si funciona la captura de pais console.log('La variable "a" almacena : ', a); // Funciona bien console.log('La variable "b" almacena : ', b); // Funciona bien //***************************************************** function renderTopic(value, p, record) { return Ext.String.format( '<a href="http://sencha.com/forum/showthread.php?t={2}" target="_blank">{0}</a>', // esto lo cambiaré después // console.log(value), value, record.data.Etiqueta, record.getId(), record.data.Pais ); } var grid = Ext.create('Ext.grid.Panel', { itemIndex: 'MyGridPanel', width: '100%', xtype:'grid', region:'center', height: 200, store: store_Sebas, loadMask: true, selModel: { pruneRemoved: false }, multiSelect: true, viewConfig: { trackOver: false, emptyText: '<h1 style="margin:20px">No matching results</h1>' }, // grid columns columns:[{ xtype: 'rownumberer', width: 50, sortable: false }, { text: "Archivos", dataIndex: 'Etiqueta', flex: 1, renderer: renderTopic, // función que me permite asignar un link para descarga del(los) archivo(s) sortable: true },{ text: "DivPola", dataIndex: 'DivPola', flex: 1, sortable: true } ], }); } else { MyPanel_01.items.each(function(c){c.close();}) console.log('Se seleccionó un pais distinto'); } // Termina el IF MyPanel_01.items.each(function(c){c.close();}) MyPanel_01.add(grid); } // Termina la función Select del listeners }, // Termina el listeners });