Foro

(resuelto) Problema rellenar formulario con datos de un grid

0
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.
0
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;) -->
0
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
0
Muchas Gracias a los Dos por sus respuestas... hice el cambio que me sugirió Stock y todo funciona perfecto.. Gracias..<!-- s;) --><!-- s;) -->

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