Foro

[solucionado]Grid dinamico

0
Hola: Tengo un problema con mi grid dinámico que cargo de la base de datos, el mismo es que la primera ves que lo cargo lo hace todo bien , pero al cerrar la ventana y volverlo a crear no me carga los datos, se queda con los datos viejos y no actualiza.Aquí les dejo el código para ver quien me pueda dar una ayuda. JS todo se muestra en una ventana var readerPresupuesto = new Ext.data.JsonReader({ idProperty: 'IdPresupuesto', meta: 'metaData' }); stPresupuesto = new Ext.data.GroupingStore({ url: 'cargarpresupuesto', reader: readerPresupuesto, sortInfo:{field: 'concepto', direction: "ASC" }, groupField: 'concepto' }); stPresupuesto.on('beforeload',function(){ this.baseParams = {idInversion: grid.getSelectionModel().getSelected().get('cod_inv')}; }); stPresupuesto.on('load',function(){ var cm = []; Ext.each(stPresupuesto.fields.items,function(data,index){ if(index == 2){ storeTipoMoneda = new Ext.data.SimpleStore({ fields: ['id_um','um2','factor','uMBase'], data: readerPresupuesto.meta.storeUm }); comboTipoMoneda = new Ext.form.ComboBox({ allowBlank: false, editable: false, store: storeTipoMoneda, id: data.name, name: data.name, triggerAction: 'all', style: 'text-align:left', mode: 'local', displayField: 'um2', valueField: 'id_um' }); comboTipoMoneda.on('expand',function(combo){ storeTipoMoneda.clearFilter(); storeTipoMoneda.filter('um2',gridPresupuesto.getSelectionModel().getSelected().get('moneda'),true,false); }); cm.push({ header: data.header, dataIndex: data.name, sortable: false, groupable: data.groupable, editor: comboTipoMoneda, hideable: data.hideable, hidden: data.hidden, renderer: function(value){ var index = storeTipoMoneda.find('id_um',value); if(index > -1) return storeTipoMoneda.getAt(index).get('um2'); else return value; }, summaryType: 'umbase' }); } else if(index > 2 && data.editar){ cm.push({ header: data.header, dataIndex: data.name, sortable: false, groupable: data.groupable, editor: new Ext.form.NumberField({ allowBlank: false, allowNegative: false, decimalPrecision: 1, style: 'text-align:left', id: data.name, name: data.name }), hideable: data.hideable, hidden: data.hidden, summaryType: 'convertir' }); } else{ cm.push({ header: data.header, dataIndex: data.name, sortable: false, groupable: data.groupable, hideable: data.hideable, hidden: data.hidden }); } } ); if(!gridPresupuesto){ gridPresupuesto = new Ext.grid.EditorGridPanel({ plugins: [new Ext.grid.GroupSummary()], store: stPresupuesto, autoScroll: true, sm: new Ext.grid.RowSelectionModel({singleSelect:true}), columns: cm, border: true, forceFit: true, autoFill: true, stripeRows: true, clicksToEdit: 1, viewConfig: { enableRowBody: true, showPreview: true }, view: new Ext.grid.GroupingView({ ShowGroupName: false, enableNoGroups: false, enableGropingMenu: false, hideGroupedColumn: false }) }); gridPresupuesto.on('beforeedit',function(e){ storeTipoMoneda.clearFilter(); if(e.field != 'umMoneda'){ if(e.record.get('umMoneda') != '') return true; else{ mostrarMensaje(1,'Debe poner primero la unidad de medida.'); return false; } } return true; }); } else{ gridPresupuesto.getColumnModel().setConfig(cm); } winPreInv.el.unmask(); winPreInv.add(gridPresupuesto); winPreInv.doLayout(); },this); stPresupuesto.load(); } y en el PHP $fields = array( array("name" => "concepto", "header" => "Concepto", "groupable" => true, "hideable" => false, "hidden" => true,'dataIndex' => 'concepto'), array("name" => "moneda", "header" => "Moneda", "groupable" => false, "hideable" => true, "hidden" => false,'dataIndex' => 'moneda'), array("name" => "umMoneda", "header" => "Unidad de Medida", "groupable" => false, "hideable" => true, "hidden" => false,'dataIndex' => 'umMoneda'), array("name" => "cod_moneda", "header" => "Codigo", "groupable" => false, "hideable" => true, "hidden" => true,'dataIndex' => 'cod_moneda'), array("name" => "cod_concepto", "header" => "cod_concepto", "groupable" => false, "hideable" => true, "hidden" => true,'dataIndex' => 'cod_concepto') ); for ($i = 0; $i < $cant_ayos; $i++) { array_push($fields, array("name" => $ayo_inicio + $i, "type" => "float", "header" => $ayo_inicio + $i, "editar" => (date('Y') false, "hideable" => true, "hidden" => false,'dataIndex' => $ayo_inicio + $i)); } $metadata = array( "totalProperty" => "results", "successProperty" => "success", "idProperty" => "id", "fields" => $fields, "root" => "data", "storeUm" => $umed, "sortInfo" => array('field' => 'concepto', 'direction' => "ASC"), "groupField" => "concepto" ); echo json_encode( array( "success" => true, "metaData" => $metadata, "results" => count($datos), "data" => $datos )); en la variable $datos ya están los datos organizados como los quiero mandar,me parece que el problema es que el store no se refresca y se queda con los datos viejos. Gracias de antemano.
0
Ya lo solucione solamente tuve que agregarle unas lineas de código gridPresupuesto.getColumnModel().setConfig(cm); gridPresupuesto.reconfigure(stPresupuesto, gridPresupuesto.getColumnModel()); con esas 2 lineas se soluciona todo el problema, la primera lo que hace es cambiar la configuracion del column model que lo creo en un array que se llama cm y la 2 lo que hace es relacionar el column model con el store que en este caso es un grouping store
0
Buenas, podrias facilitar el codigo completo. Estoy trantando de hacer un grouping grid con summary pero con columnas variables y no he podido dar en la tecla. Te agradeceria la ayuda. Muchas gracias
0
Hola, yo tambn estoy pasando por el mismo problema me podrian pasar el codigo 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.