(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 bien
Por:
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 bien
por 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.
