Extjs treeGrid分頁實例

Extjs treeGrid分頁實例,項目中用到,拿出來跟大家分享一下,主要是通過兩個store實現。
ProTreeGrid = Ext.extend(Ext.tree.Panel, {
	_baseParam : {
		process : '項目立項',
		isShow : 'true',
		start : 1
	},
	constructor : function(_config) {
		if (_config == null)
			_config = {};
		Ext.apply(this, _config);

		this.store1 = Ext.create('Ext.data.JsonStore', {
			autoLoad : true,
			pageSize : basicConstant.LIMIT,
			proxy : {
				type : 'ajax',
				url : "xmgl/pro-info-manage!page.action",
				extraParams : this._baseParam,
				reader : {
					type : 'json',
					root : 'rows',
					totalProperty : "totalCount"
				}
			},
			model : 'ProInfo'
		});

		this.store = Ext.create('Ext.data.TreeStore', {
			model : 'ProInfo',
			proxy : {
				type : 'ajax',
				url : 'xmgl/pro-info-manage.action'
			},
			folderSort : true,
			listeners : {
				'beforeload' : {
					fn : function(_s, _op, _e) { 
						this._baseParam.limit = basicConstant.LIMIT;
						_s.proxy.extraParams = this._baseParam;
					},
					scope : this
				}
			}
		});

		this['selModel'] = Ext.create('Ext.selection.TreeModel', {
			mode : 'SINGLE',
			listeners : {
				'selectionchange' : {
					fn : this.selectionChangeHandler,
					scope : this
				}
			}
		});
		this['columns'] = [ {
			xtype : 'treecolumn',
			text : '項目性質',
			flex : 1,
			sortable : true,
			dataIndex : 'proClass'
		}, {
			text : '項目名稱',
			flex : 2.5,
			dataIndex : 'proName',
			sortable : true
		}, {
			text : '流程狀態',
			flex : .75,
			dataIndex : 'process',
			sortable : true
		}, {
			text : '項目時間',
			xtype : 'datecolumn',
			format : 'Y-m-d',
			dataIndex : 'crTime',
			sortable : true,
			flex : .85
		}, {
			text : '項目編號',
			flex : 1,
			dataIndex : 'proNo',
			sortable : true
		}, {
			text : '項目單位',
			flex : 1,
			dataIndex : 'unit',
			sortable : true
		}, {
			text : '優先級',
			flex : .6,
			dataIndex : 'priority',
			sortable : true
		}, {
			text : '項目類型',
			flex : .75,
			dataIndex : 'proType',
			sortable : true
		}, {
			text : '項目內容',
			flex : 2,
			dataIndex : 'proContent',
			sortable : true
		}, {
			text : '附件數',
			flex : .6,
			dataIndex : 'fileCount',
			sortable : true
		} ]
		ProTreeGrid.superclass.constructor.call(this, {
			useArrows : true,
			height : this._height,
			width : this._width,
			autoScroll : true,
			rootVisible : false,
			dockedItems : [ {
				_treeGrid : this,
				xtype : 'pagingtoolbar',
				id : 'PROTREEGRID_PAGEBAR',
				store : this.store1,
				dock : 'bottom',
				displayInfo : true,
				listeners : {
					change : function(obj, pdata, options) {
						if(this._treeGrid._baseParam.start==pdata.currentPage)
							return;
						this._treeGrid._baseParam.start = pdata.fromRecord;
						this._treeGrid._baseParam.limit = basicConstant.LIMIT;
						this._treeGrid.store.load( {
							params : this._treeGrid._baseParam
						});
					}
				}
			} ],
			viewConfig : {
				stripeRows : true,
				enableTextSelection : true,
				getRowClass : function(record) {
					if (record.get("proClass") == '收入項目') {
						return 'srcss';
					} else if (record.get("proClass") == '支出項目') {
						return 'zccss';
					}
				}
			},
			tbar : new Ext.toolbar.Toolbar( {
				id : 'TBAR_PROTREEGRID',
				items : [ new ProClassQueryCombo( {
					width : 140,
					labelWidth : 60
				}), '-', '項目名稱:', {
					xtype : 'textfield',
					width : 70
				}, '無分項總體項目顯示:', {
					xtype : 'checkbox',
					checked : true,
					width : 70
				}, {
					text : "查詢",
					icon : 'images/icons/search.gif',
					handler : this.onSearch,
					scope : this
				}, {
					text : "重置",
					icon : 'images/icons/del.gif',
					handler : this.onReset,
					scope : this
				}, {
					text : "高級查詢",
					icon : 'images/icons/search.gif',
					handler : this.onAdvSearch,
					scope : this
				} ]
			})
		});
	},
	selectionChangeHandler : function() {
	},
	reLoadData : function() {
		this.store.load( {
			params : this._baseParam
		});
		this.store1.load( {
			params : this._baseParam
		});
	},
	onSearch : function() {
		var _param = {};
		var _tbar = Ext.getCmp('TBAR_PROTREEGRID');
		_param.process = _tbar.items.items[0].value;
		_param.proClass = _tbar.items.items[2].value;
		_param.proName = _tbar.items.items[5].value;
		_param.isShow = _tbar.items.items[7].value;
		// this.store1.load(1);
	this._baseParam = _param
	this.reLoadData();
},
onReset : function() {
	var _tbar = Ext.getCmp('TBAR_PROTREEGRID');
	_tbar.items.items[0].setValue('項目立項');
	_tbar.items.items[2].setValue('');
	_tbar.items.items[5].setValue('');
	this._baseParam = {
		process : '項目立項',
		isShow : 'false'
	};
},
onAdvSearch : function() {
	new ProQueryWin( {
		_grid : this,
		_process : '項目立項'
	}).show();
}

});

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章