(resuelto) Problema rellenar formulario con datos de un grid
Bueno muchach@s, con el proyecto ya he ido avanzando, ahora se me está presentando un pequeño problema y es que estoy haciendo el formulario para prestar un video, muestro el grid de los videos y cuando seleccionan uno se carga una ventana para empezar el proceso de prestamo, la ventana debe traer el id y el título del video, el problema se presenta en que la primera vez que lo hago me carga perfectamente el codigo del video, pero si cierro la ventana y vuelvo a elegir un video del grid el codigo del video se queda con el primero que elegí.. si quieren pueden ver el problema en la página de prueba: <!-- m -->http://extjs.consultora-devian.net/<!-- m --> donde dice "prestar video".
Este es el grid:
/******************************************************************************* ***************************GRID DE PRESTAMO DE VIDEO*************************** *******************************************************************************/ var preVideoColumnModel = new Ext.grid.ColumnModel([ //new Ext.grid.RowNumberer(), //numerar new Ext.grid.CheckboxSelectionModel(), {id: 'VID_IDE', header: "ID", width: 80, sortable: true, dataIndex: 'VID_IDE'}, {header: "Titulo", width: 80, sortable: true, dataIndex: 'VID_TIT'}, {header: "Formato", width: 80, sortable: true, dataIndex: 'FMT_NOM'}, {header: "Area", sortable: true, dataIndex: 'VID_ARE'}, {header: "Duracion", width:50, sortable: true, dataIndex: 'VID_DUR'}, {header: "Autor", sortable:true, dataIndex: 'VID_AUT'}, {header: "Resenia", sortable:true,dataIndex:'VID_RES'} ]); var filtrosPreVideo = new Ext.ux.grid.GridFilters({filters:[ {type: 'string', dataIndex: 'VID_IDE'}, {type: 'string', dataIndex: 'VID_ARE'}, {type: 'string', dataIndex: 'VID_DUR'}, {type: 'string', dataIndex: 'VID_AUT'}, {type: 'string', dataIndex: 'VID_PRV'}, {type: 'string', dataIndex: 'VID_RES'}, {type: 'string', dataIndex: 'VID_TIT'} ]}); var gridPreVideo = new Ext.grid.EditorGridPanel( { //renderTo: document.body, id: 'gridPreVideo', sm: new Ext.grid.RowSelectionModel({singleSelect:true}), //permita seleccionar un solo registro // clickstoEdit: 1, title: 'Videos', height:300, width:800, stripeRows: true, frame: true, store: actVideos, cm: preVideoColumnModel, tbar: [ { xtype: 'tbbutton', iconCls: 'addRegistro', text: 'Prestar', handler: function(){ // wingVideo.show(); } }, ], plugins: filtrosPreVideo, bbar: new Ext.PagingToolbar({ pageSize: 10, store:actVideos }), listeners: { //acá trato de hacer el paso de los valores del Grid al Formulario rowclick: function(grid,rowindex,e){ var fila=grid.getStore().getAt(rowindex); Servicio_Form.getForm().reset(); alert("ID: "+fila.get('VID_IDE')+" Titulo: "+fila.get('VID_TIT')); //Ext.getCmp('VIDEOIDE').value=fila.get('VID_IDE'); <-- no funciona bien Servicio_Form.findById('VIDEOIDE').value=fila.get('VID_IDE'); // <-- no funciona bien Ext.getCmp('wingServicio').show(); } } }); //fin del Gird de video /******************************************************************************* ************************FIN GRID DE PRESTAMO DE VIDEO************************** *******************************************************************************/[b]Este es el formulario que debo llenar con el grid (es solo de prueba los combobox aun no funcionan <!-- s;) --><!-- s;) --> ):[/b]
var Servicio_Form = new Ext.FormPanel({ url: 'ingBD.php?ing=servicio', frame: true, id:'Servicio_Form', title: 'Prestamo', width: 250, items:[ { xtype: 'combo', name: 'blq', fieldLabel: 'Bloque', mode: 'local', store: bloques, displayField: 'BLQ_NOM', valueField: 'BLQ_IDE', hiddenName : 'blq', triggerAction: 'all', width: 130, selectOnFocus: true, emptyText: 'Seleccione uno', forceSelection: true, //para que la seleccion no se pierda al perder el foco allowBlank: false, listeners: { beforeselect: function(cmb,record,index) { var sls = Ext.getCmp('sal'); sls.clearValue(); sls.store.removeAll();//eliminamos todos los datos del store de Salones sls.store.load({params:{'bloque':record.get('BLQ_IDE')}}); //recargamos el store de Salones } } }, { xtype: 'combo', name: 'sal', id: 'sal', fieldLabel: 'Salon', mode: 'local', store: salones, displayField: 'SAL_IDE', //valueField: 'SAL_IDE', //hiddenName : 'sal', triggerAction: 'all', width: 130, selectOnFocus: true, emptyText: 'Seleccione uno', forceSelection: true, //para que la seleccion no se pierda al perder el foco allowBlank: false }, { xtype: 'textfield', fieldLabel: 'Codigo Material', name: 'VIDEOIDE', id: 'VIDEOIDE', allowBlank: false }, { xtype: 'textfield', fieldLabel: 'Nombre Material', name: 'NOMBREMAT', allowBlank: false } ] });Espero que puedan ayudarme, gracias.
Prueba a cambiar
Servicio_Form.findById('VIDEOIDE').value=fila.get('VID_IDE'); // <-- no funciona bienPor:
Servicio_Form.findById('VIDEOIDE').dom.value=fila.get('VID_IDE');O mejor:
Servicio_Form.getForm().findField('VIDEOIDE').setValue(fila.get('VID_IDE'));En cuanto al combo, prueba a quitarle el id Ya me contarás si te han servido de algo mis consejos, suerte <!-- s;) --><!-- s;) -->
Solo cambia esto:
//Ext.getCmp('VIDEOIDE').value=fila.get('VID_IDE'); <-- no funciona bien Servicio_Form.findById('VIDEOIDE').value=fila.get('VID_IDE'); // <-- no funciona bienpor esto:
Ext.getCmp('VIDEOIDE').setValue(fila.get('VID_IDE'));Con eso te debe funcionar bien, recuerda que para modificar el valor de un campo utilizamos la función "setValue" <!-- s;) --><!-- s;) --> saludos
¿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.