core:change columnmodel's editor
grid.getColumnModel().setEditor(e.column,new Ext.grid.GridEditor(new Ext.form.ComboBox({
..})
))
function rebindcolumneditor(e) { var params_ds = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : 'report/getDistinctParamValues.do' }), reader : new Ext.data.JsonReader({ totalProperty : 'totalProperty',// 记录数的属性 root : 'root' }, ['paramValue']), listeners:{ beforeload:function(store,options) { var new_params = { paramId : e.record.get('id') }; Ext.apply(options.params,new_params); } } }); var params_resultTpl = new Ext.XTemplate( '<div class="search-item-header"><h3>' + '<span style="width=300px">可选值</span>' + '</h3></div>', '<tpl for="."><div class="search-item">', '<h3><span style="width=300px">{paramValue}</span></h3>', '</div></tpl>'); e.grid.getColumnModel().setEditor(e.column,new Ext.grid.GridEditor(new Ext.form.ComboBox({ store : params_ds, displayField : 'paramValue', typeAhead : false, loadingText : '正在查找...', listWidth : 300, pageSize : 10, hideTrigger : true, tpl : params_resultTpl, allowBlank : false, minChars : 1, itemSelector : 'div.search-item', listeners : { select : function(combo, record, index) { var selModel = combo.gridObj .getSelectionModel(); if (selModel.hasSelection()) { var selections = selModel.getSelections(); combo.gridObj.stopEditing(); Ext.each(selections, function(item) { item .set( 'paramValue', record .get('paramValue')); }); } combo.collapse(); } } }))); } ... listeners:{ beforeedit:function(e) { rebindcolumneditor(e); } },