grid动态生成列

xxx= Ext.extend(Ext.grid.GridPanel, {
	id : 'xxx',
	stripeRows : true,
	region : 'center',
	exportJsonStr: null,
	loadMask : {
		msg : 'Please Wait...'
	},
	sm : new Ext.grid.RowSelectionModel(),
	autoScroll : true,
	initComponent : function() {
		this.store = new Ext.data.Store({
			proxy : new Ext.data.HttpProxy({
				url : 'xxxx?11111=11111'
			}),
			reader : new Ext.data.JsonReader({
				totalProperty : 'totalProperty',
				root : 'msg'
				}, []
			),
			listeners : {
				'beforeload' : function(msgDetailStore) {
					Ext.apply(msgDetailStore.baseParams, {
						msg : Ext.getCmp('xxxDetailWindow').msg
					});
				},
				load : function(store, records, options) {
					// 空数据提示
					if (Ext.isEmpty(records)) {
						Ext.QuickMsg.show('提示', '没有查询到相关数据',
										'250px', 2, Ext.getBody(), [10, 200],
										't-t', true, true);
					} else {
						/**
						 * 判定单元格,设置单元格告警样式
						 */
						var gridPanel = Ext.getCmp('xxx');
						AddCellCls(gridPanel, records);
					}
				},
				metachange : function(store, meta) {
					/**
					 * 根据meta动态生成列
					 */
					var fields = meta.fields;
					var config = [];
					for (var i = 0; i < fields.length; i++) {
						var field = fields[i];
						var name = field.name;

						// 判断某些列需要添加隐藏属性, hidden:true
						if (name == 'xx' || name == 'xx') {
							config.push({
								header : name,
								hidden: true,
								dataIndex : name,
								align : 'center',
								width : 80
							});
						}else{

config.push({
								header : name,
								dataIndex : name,
								align : 'center',
								width : 120
							});
						}

						// 刷新列
						var gridPanel = Ext.getCmp('xxx');
						gridPanel.getColumnModel().setConfig(config);
					}
				}
			}
		});
		// 根据meta动态生成列,参见store的metachange函数
		this.cm = new Ext.grid.ColumnModel({
			defaults : {
				sortable : true
			},
			columns : []
		});
				
		this.bbar = new Ext.PagingToolbar({
			pageSize : 1000,
			store : this.store,
			firstText : '第一页',
			nextText : '下一页',
			prevText : '上一页',
			refreshText : '刷新',
			lastText : '最后一页',
			displayInfo : true,
			displayMsg : '显示第 {0} - {1}条记录 共{2}条记录',
			emptyMsg : '没有数据', // 下面为分页插件代码
//					plugins : new Ext.ux.ProgressBarPager(),
			listeners : {
				beforechange : function(toolBar, params) {
					// 数据加载遮罩
					var myMask = new Ext.LoadMask(
						Ext.get('xxx'),
						{
							msg : "Please wait...",
							store : this.store
						}
					);
myMask.show();
				}
			}
		});
		xxx.superclass.initComponent.call(this);
	}
});

Ext.reg('xxx', xxx);

你可能感兴趣的:(grid)