editorGridPanel根据其他列的值动态改变本列编辑器对象

本文介绍如何使用ExtJS创建可编辑的Grid面板,并通过监听器动态改变单元格编辑器。示例中定义了一个ArrayStore数据存储,ColumnModel列模型,并实现EditorGridPanel。根据数据的不同类型动态设置单元格编辑器为TextField或NumberField。
摘要由CSDN通过智能技术生成

一、原始grid

store、columnModel、editorGridPanel的声明

var store;
(function() {
	var data= [ [ 'a', '1' ], [ 'b', '2' ], [ 'c', '3' ], [ 'd', '4' ] ];
	store = new Ext.data.ArrayStore({
		fields : [ {
			name : 'kind'
		}, {
			name : 'value'
		} ]
	});
	store.loadData(data);
})();

var cm = new Ext.grid.ColumnModel({
	// specify any defaults for each column
	defaults : {
		sortable : true
	// columns are not sortable by default
	},
	columns : [ new Ext.grid.RowNumberer({
		width : 26
	}), {
		id : 'kind',
		header : '种类',
		dataIndex : 'kind',
		width : 120
	},{
		id : 'value',
		header : '值',
		dataIndex : 'value',
		width : 120,
		header : '<span style="font-weight:bold">标称下限</span>',
		tooltip : '可编辑列',
		editor : new Ext.form.NumberField({
			id : 'lowerOffsetEditor',
			allowBlank : false
		})
	} ]
});

var gridPanel = new Ext.grid.EditorGridPanel({
	region : "center",
	frame : false,
	store : store,
	cm : cm,
	loadMask : true,
	tbar : [ '-', {
		text : '保存',
		id : 'savePhysical',
		icon : '../../../resource/images/btnImages/disk.png',
		handler : function(){
			// 保存用js代码
		}
	} ]
});


二、使用listener动态改变编辑器

修改后gridPanel如下:

var gridPanel = new Ext.grid.EditorGridPanel({
	region : "center",
	frame : false,
	store : store,
	cm : cm,
	loadMask : true,
	tbar : [ '-', {
		text : '保存',
		id : 'savePhysical',
		icon : '../../../resource/images/btnImages/disk.png',
		handler : function(){
			// 保存用js代码
		}
	},
	listeners : {
		'beforeedit' : function(e) {
			var kind = e.record.get("kind");
			if (kind == "a" || kind == "b") {
				this.getColumnModel().setEditor(e.column, new Ext.form.TextField({
					editable : true,
					allowBlank : false,
					regex : /^1E-(\d)+$/
				}));
			} else {
				this.getColumnModel().setEditor(e.column, new Ext.form.NumberField({
					allowBlank : false
				}));
			}
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值