在editorgridpanel中根据每行的第一列,变换第二列的editor

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);
			}
		},

你可能感兴趣的:(ext)