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
                      }
}


你可能感兴趣的:(ext)