
06/04/2015, 09:29
|
| | Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 16 años, 1 mes Puntos: 1 | |
será que alguién me puede ayudar?... Por fa.. Hola amigos(as),
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:
var a = record.parentNode.raw.name;
y Hasta ahora he probado infinidad de ejemplos que he encontrado en la red, pero no consigo que nada me funciones... Por ejemplo esto:
Código:
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);
Que adaptado a mi aplicación dejo como:
Código:
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);
Y en la consola me entrega:
Código:
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
El ejemplo que sigo, propone usar una función para trabajar con filtros más complejos:
Código:
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
}
});
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...
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
});
|