Foro

[SOLUCIONADO] Problema con combo en grilla editable...

0
Una vez mas aqui molestando, resulta que tengo una grilla editable, que tiene un textfield y un combo, ella graba la informacion sin problemas pero al momento de cargar el store me muestra el codigo en el caso de los combos y no la descripcion correspondiente a su valor, y al hacer clic sobre la fila, es decir, al entrar a editar la columna donde esta el combo "si" muestra la descripcion, aqui dejo el codigo de mi colummodel var cmodelPreguntasTipo=new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(), { dataIndex : 'id', header : 'id', sortable : false, hidden : true }, { dataIndex : 'descripcion', header : 'Descripcion', sortable : true, hidden : false, width : 400, editor : { xtype : 'textfield', allowBlank : false, listeners : { blur: function(c){ c.setValue(c.getValue().toUpperCase()) } } } }, { header : 'Tipo de pregunta', sortable : true, hidden : false, width : 200, dataIndex : 'hoja', editor : { xtype : 'combo', allowBlank : false, id : 'tipoPreguntaId', hiddenName : 'tipoPreguntaHi', store : new Ext.data.ArrayStore({ fields: ['hoja', 'descripcion'], data : [ ['1', 'Pregunta abierta'], ['2', 'Pregunta cerrada (alternativas)'] ] }), displayField : 'descripcion', valueField : 'hoja', mode : 'local', typeAhead : true, triggerAction : 'all', lazyRender : true, name : 'hoja', emptyText : 'Seleccione un tipo', listClass : 'x-combo-list-small' } } ] ); desde ya gracias y espero sus comentarios....
0
cambia id : 'st_hojas', por: storeId : 'st_hojas', y me cuentas
0
Tokkaido, gracias por tu preocupacion despues de mucho andar y estar a cabezasos esto funciono, lo que hice fue lo sgte. { header : 'Tipo de pregunta', sortable : true, hidden : false, width : 200, dataIndex : 'hoja', renderer : this.muestraDescripcion, editor : { xtype : 'combo', allowBlank : false, id : 'cmbtipPregunta', hiddenName : 'tipoPreguntaHi', store : new Ext.data.ArrayStore({ fields : ['hoja', 'descripcion'], data : [ [0,'Pregunta abierta'], [1,'Pregunta cerrada (alternativas)'] ] }), displayField : 'descripcion', valueField : 'hoja', mode : 'local', typeAhead : true, triggerAction : 'all', lazyRender : true, name : 'hoja', emptyText : 'Seleccione un tipo' } } osea saque el renderer del editor, que estaba mal y la funcion muestraDescripcion la deje como me lo mencionaste, es decir, asi: function muestraDescripcion(valor){ var comboTipoPregunta = Ext.getCmp('cmbtipPregunta'); var stx = comboTipoPregunta.getStore(); var index = stx.find('hoja',valor); if(index>-1){ var record = stx.getAt(index); return record.get('descripcion'); } } creeme que estoy super agradecido por tu ayuda y dedicacion
0
de nada ;)
0
antes de tu codigo: var cmodelPreguntasTipo=new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(), { .... debes crear esto showDescripcion: function(valor){ var st = Ext.StoreMgr.lookup('st_hojas'); var index = st.find('hoja',valor); if(index>-1){ var record = st.getAt(index); return record.get('descripcion'); } } en tu definición de las columnas agrega esto: { header : 'Tipo de pregunta', sortable : true, hidden : false, width : 200, dataIndex : 'hoja', renderer : this.showDescripcion, debería funcionarte
0
Tokkaido, gracias por tu dedicacion pero aun no logro hacer funcionar esto mira lo deje de la siguiente forma, y ahora la grilla no me muestra nada. showDescripcion: function (valor){ var st = Ext.StoreMgr.lookup('st_hojas'); var index = st.find('hoja',valor); if(index>-1){ var record = st.getAt(index); return record.get('descripcion'); } } var cmodelPreguntasTipo=new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(), { header : 'Tipo de pregunta', sortable : true, hidden : false, width : 200, dataIndex : 'hoja', editor : { xtype : 'combo', allowBlank : false, id : 'tipoPreguntaId', hiddenName : 'tipoPreguntaHi', store : new Ext.data.ArrayStore({ id : 'st_hojas', fields: ['hoja', 'descripcion'], data : [ [1,'Pregunta abierta'], [2,'Pregunta cerrada (alternativas)'] ] }), displayField : 'descripcion', valueField : 'hoja', mode : 'local', typeAhead : true, triggerAction : 'all', lazyRender : true, name : 'hoja', emptyText : 'Seleccione un tipo', renderer : showDescripcion } } ] espero me puedas seguir ayudando...
0
Gracias Tokkaido por tu respuesta pero la verdad sigue sin funcikonar hice lo que me dijiste en el colummodel y en el grid quedando como lo colocare a continuacion pero no funciona la verdad no se me ocurre que hacer o debo estar entendidneo mal, si puedes seguir ayudandome desde ya te lo agradezco asi me quedo el colummodel... var cmodelPreguntasTipo=new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(), { dataIndex : 'id', header : 'id', sortable : false, hidden : true }, { dataIndex : 'descripcion', header : 'Descripcion', sortable : true, hidden : false, width : 400, editor : { xtype : 'textfield', allowBlank : false, listeners : { blur: function(c){ c.setValue(c.getValue().toUpperCase()) } } } }, //{header:'Tipo de pregunta', dataIndex:'descripcion',width:100,sortable: true,editor:comboPerfil} { header : 'Tipo de pregunta', sortable : true, hidden : false, width : 200, dataIndex : 'hoja', editor : { xtype : 'combo', allowBlank : false, id : 'tipoPreguntaId', hiddenName : 'tipoPreguntaHi', store : new Ext.data.ArrayStore({ id : 'idstore', fields: ['hoja', 'descripcion'], data : [ [1,'Pregunta abierta'], [2,'Pregunta cerrada (alternativas)'] ] }), displayField : 'descripcion', valueField : 'hoja', mode : 'local', typeAhead : true, triggerAction : 'all', lazyRender : true, name : 'hoja', emptyText : 'Seleccione un tipo' } } ] ); y asi esta la grilla var gridPreguntasTipo = new Ext.grid.GridPanel({ id : 'gridPreguntasTipoId', minHeight : 180, height : 200, title : 'Pregunta(s) de la categoría', split : true, autoScroll : true, border : false, loadMask : true, store : storeTablaGridPreguntas, cm : cmodelPreguntasTipo, plugins : [editorPreguntasTipo], view : new Ext.grid.GroupingView({ markDirty : false // permite quitar la marca roja que indica que el registro es nuevo }), listeners:{ 'rowclick' : function (grid, row, evt){ var movRecord = storeTablaGridPreguntas.getAt(row); //Agregar aqui edicion de tab si es pregunta cerrada------------ idBorrar = movRecord.data.id; if(idBorrar>0){ tabsCategoriaPreguntas.getItem(1).setDisabled(false); Ext.getCmp('idCategoria').setValue(idBorrar); }else{ tabsCategoriaPreguntas.getItem(1).setDisabled(true); Ext.getCmp('idCategoria').setValue(""); } }, 'render':function(valor){ var st = Ext.StoreMgr.lookup('idstore'); alert(st); var index = st.find('hoja',valor); if(index>-1){ var record = st.getAt(index); return record.get('descripcion'); } } } , tbar : [{ iconCls : 'icon-data-add', text : 'Agregar', handler : function(){ var e = new RegistroPreguntasTipo({ descripcion : 'Nuevo registro', id : 0 }); edita = Ext.getCmp('editorPreguntasTipoId'); edita.stopEditing(); xTab = Ext.getCmp('gridPreguntasTipoId'); StorePaso=xTab.getStore(); StorePaso.insert(0, e); xTab.getView().refresh(); xTab.getSelectionModel().selectRow(0); edita.startEditing(0); } }, { ref : '../removeBtn', iconCls : 'icon-data-delete', text : 'Borrar', disabled : true, handler : function(){ gridedita = Ext.getCmp('gridPreguntasTipoId'); var selectedKeys = gridedita.selModel.selections.keys; var encoded_keys = Ext.encode(selectedKeys); gridedita = Ext.getCmp('gridPreguntasTipoId'); edita = Ext.getCmp('editorPreguntasTipoId'); edita.stopEditing(); StorePaso=gridedita.getStore(); var s = gridedita.getSelectionModel().getSelections(); for(var i = 0, r; r = s[i]; i++){ StorePaso.remove(r); } } }] });
0
puedes agregar un renderer a tu columna y devolverle la descripción, asignale un storeId a tu store, por ejemplo: condicion: function(valor){ var st = Ext.StoreMgr.lookup('storeId_de_tu_store'); var index = st.find('hoja',valor); if(index>-1){ var record = st.getAt(index); return record.get('descripcion'); } } espero te sirva

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