Foro

Cómo armar un TreePanel una vez que leyó una grilla con datos del usuario

0
Tengo un ViewPort con una grilla arriba y un árbol al costado, necesito que en el árbol tome como Nodo Raíz uno que veo en la grilla (que trae datos del usuario), pero como es asincrónico, o arma todo antes, o, si lo pongo en un on('load' del store, no me carga nada después. ¿Cómo puedo hacer para que el árbol espera a que la grilla tenga datos? Y que muestre el TreePanel (lo más que conseguí es que lo deje vacío, sin nodos). Hay otro error, en el PHP que lee los hijos del nodo actual, que no consigo pasarle bien mis parámetros. Ext.ns('dinami.lim'); //the blank image Ext.BLANK_IMAGE_URL = '../ExtJS/resources/images/default/s.gif'; Ext.QuickTips.init(); dinami.lim.RemitosDistribucion = { init: function(){ // Ext.onReady(function(){ Ext.form.Field.prototype.msgTarget = 'side'; var NodoSelecionado = '90000'; var VezArbol = 0; var QueMuestra = 'd'; var DondeSePara = 'n'; var CamposUsuario = Ext.data.Record.create([ {name: 'IdUsuario', type: 'int' }, {name: 'Usuario', type: 'string' }, {name: 'QueEntrega', type: 'int' }, {name: 'Destinatario', type: 'int' }, {name: 'CUIEFijo', type: 'string' }, {name: 'CaminoFijo', type: 'string' } ]); var cmUsuario = new Ext.grid.ColumnModel([{ id: 'IdUsuario', header: 'IdUsuario', dataIndex: 'IdUsuario', hidden: true },{ id: 'Usuario', header: 'Usuario', dataIndex: 'Usuario', width: 100 },{ id: 'QueEntrega', header: 'QueEntr', dataIndex: 'QueEntrega', hidden: true },{ id: 'Destinatario', header: 'Dest', dataIndex: 'Destinatario', width: 30 },{ id: 'CUIEFijo', header: 'C fijo', dataIndex: 'CUIEFijo', width: 44 },{ id: 'CaminoFijo', header: 'CaminoFijo', dataIndex: 'CaminoFijo', width: 215, hidden: false } ]); var UsuarioStore = new Ext.data.JsonStore({ fields: ['IdUsuario', 'Usuario', 'QueEntrega', 'Destinatario', 'CUIEFijo', 'CaminoFijo'], root: 'DatosUsuario', method: 'POST', url: 'listarUsuario.php' }); UsuarioStore.load(); var grillaUsuario = new Ext.grid.GridPanel({ id: 'grillaUsuario', store: UsuarioStore, colModel: cmUsuario, enableHdMenu: false, layout: 'fit' }); grillaUsuario.colModel.config[0].sortable = false; // Intentos (fallidos) de solucionar el problema: // grillaUsuario.on('render', function (grilla) { // var regUsuario = UsuarioStore.getAt(0); // var regUsuario = grilla.getStore().getAt(0); // NodoSelecionado = UsuarioStore.getAt(0).get('CaminoFijo'); // Ext.Msg.alert('Nodo', NodoSelecionado); // }); UsuarioStore.on('load', function(MiStore, Registros, Opciones) { var regUsuario = MiStore.getAt(0); NodoSelecionado = regUsuario.get('CaminoFijo'); Ext.Msg.alert('Nodo leido', NodoSelecionado); }); // if (!isset(NodoSelecionado)) { NodoSelecionado = '90000'; } //Crear un nodo que cargue asicronicamente (AJAX) sus hijos var raiz = new Ext.tree.AsyncTreeNode({ text: 'Raiz', id: NodoSelecionado, rootVisible: false, singleClickExpand: true, draggable: false }); var cargaArbolEfec = new Ext.tree.TreeLoader({ url:'listarEfectoresNodo.php', // ?CUIE=' + NodoSelecionado, requestMethod:'GET', Params:{node:NodoSelecionado, vez:VezArbol, que:QueMuestra, donde:DondeSePara} }); //Crear Arbol var ArbolEfectores = new Ext.tree.TreePanel({ id: 'ArbolEf', // autoLoad: 'listarEfectoresNodo.php?CUIE=' + NodoSelecionado loader: cargaArbolEfec, autoScroll: true, useArrows: true, minwidth: 200, maxwidth: 500, // enableDD: true, //Permite Drag and Drop containerScroll: true, // esto no anda => renderTo: 'oeste', //Id del tag en el cual se renderiza listeners: { click: {fn: function(node) { DondeSePara = 'n'; NodoSelecionado = node.id; VezArbol = VezArbol + 1; }} }, root: raiz, rootVisible: false //No queremos ver el nodo raiz }); ArbolEfectores.getRootNode().expand(); var ventana = new Ext.Viewport({ layout: 'border', title: 'Carga de distribucion de LIM', frame: true, border: false, width: 865, // 815, height: 560, items: [{ id: 'norte', region: 'north', autoHeight: true, border: false, items: [ grillaUsuario ], margins: '0 0 5 0' }, { id: 'oeste', region: 'west', title: 'Arbol de Efectores', collapsible: true, resizable: true, layout: 'fit', border: true, width: 300, items: [ ArbolEfectores ] }, { id: 'sur', region: 'south', title: 'Title for Panel', collapsible: true, html: 'Aca iran otros datos', split: true, height: 50, minHeight: 100 }, { id: 'este', region: 'east', title: 'Title for the Grid Panel', collapsible: true, split: true, width: 200, html: 'Aca ira ayuda para llenar los campos' }, { id: 'centro', region: 'center', xtype: 'tabpanel', // TabPanel itself has no title items: { title: 'Default Tab', html: 'The first tab\'s content. Others may be added dynamically' } }] }); /* esto tampoco anda: ArbolEfectores.on('beforeload', function( This, nodo, callback ) { ArbolEfectores.getRootNode().expand({Params:{node:NodoSelecionado, que:QueMuestra, donde:DondeSePara}}); }); */ grillaUsuario.on('columnresize', function ( columna, nuevoAncho ){ alert('columna ' + columna + ' Nuevo ancho ' + nuevoAncho); }); // aca intentaba correr el final del .on(, pero tampoco sirve: no muestra nada }); }} Ext.onReady(dinami.lim.RemitosDistribucion.init, dinami.lim.RemitosDistribucion); Lo peor es que en el PHP que trae los hijos del nodo actual no me recibe más que "nodo", ningún otro parámetro, ni por GET ni por POST: listarEfectoresNodo.php: Desde ya, muchas gracias

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