Ext中combobox在GridPanel里显示数据问题
一、首先我先写好一个ColumnModel,定义代码如下:
js代码:
var PAG007_clm_AddressCm = new Ext.grid.ColumnModel([ {header:'<center>都市名</center>',dataIndex:'CITY_NAME',editor: PAG007_cmb_City}, {header:'<center>住所</center>',dataIndex:'ADDRESS',editor:new Ext.form.TextField({allowBalank:false})}, {header:'<center>电话号码</center>',dataIndex:'TEL_NO',editor:new Ext.form.TextField({allowBalank:false})}, {header:'<center>电话号码种类</center>',dataIndex:'TEL_NO_TYPE',editor: new Ext.form.ComboBox({ id:'type', name:'type', readOnly:true, fieldLabel: '电话号码种类, hiddenName:'id', store: PAG007_cmb_Type_Store, displayField:'text', valueField:'value', typeAhead: true, mode: 'local', triggerAction: 'all', emptyText:'请选择', selectOnFocus:true }), renderer: function(value, cellmeta, record) { //通过匹配value取得ds索引 var index = PAG007_cmb_Type_Store.find(Ext.getCmp('type').valueField,value); //通过索引取得记录ds中的记录集 var record = PAG007_cmb_Type_Store.getAt(index); //返回记录集中的value字段的值 var value = ""; if (record) { value = record.data.text; } return value;//注意这个地方的value是上面displayField中的value }},// {header:'<center>削除</center>',dataIndex:'ISCHECK'}, chb_delete ]);
二、定义的是EditorGridPanel:
var PAG007_AddressGridPanel = new Ext.grid.EditorGridPanel({ title: '当前联系方式,cm : PAG007_clm_AddressCm,sm : PAG007_rsm_AddressSm,plugins:[chb_delete],clicksToEdit:1,loadMask : true,region : 'center',store : PAG007_AddressGridPanel_Store,enableColumnResize : false,enableColumnMove : true,viewConfig : {scrollOffset : 20,forceFit : true}});
三、定义的是JsonStore:(我这里是用的静态的数据,动态的数据同样应该可行。)
var PAG007_cmb_Type_Store = new Gt.common.engine.JsonStore({ data : { 'root' :[ {'value' : '1','text' : '住宅'}, {'value' : '2','text' : '公司'}, {'value' : '3','text' : '手机'} ] }, root : 'root', fields : ['value', 'text'] });
四、关键部分代码(我用的是‘电话号码种类’的那列,我的种类是分'1'、'2'、'3',三种情况,是在后台数据库中取出来的,要对应前台的displayField显示):
{header:'<center></center>',dataIndex:'TEL_NO_TYPE',editor: new Ext.form.ComboBox({ id:'type', name:'type', readOnly:true, fieldLabel: '电话号码种类', hiddenName:'id', store: PAG007_cmb_Type_Store, displayField:'text', valueField:'value', typeAhead: true, mode: 'local', triggerAction: 'all', emptyText:'请选择', selectOnFocus:true }), renderer: function(value, cellmeta, record) { //通过匹配value取得ds索引 var index = PAG007_cmb_Type_Store.find(Ext.getCmp('type').valueField,value); //通过索引取得记录ds中的记录集 var record = PAG007_cmb_Type_Store.getAt(index); //返回记录集中的value字段的值 var value = ""; if (record) { value = record.data.text;//对应store中的text字段(fields) } return value;//注意这个地方的value是上面displayField中的value }}