用 SpringMVC hibernate EXtjs 开发的时候会大量使用 extjs grid 作为数据的展示控件,也会操作数据,那么grid 在要选择数据的时候,就需要注意,如果grid是分页,那我们一般会 监听他的 CheckBox 的选择事件和反选择事件,选择的时候把对应的ID放在一个全局数组中,在反选择的时候就把对应的ID从全局数组中删除,然后再监听store的load事件,每次加载完数据后就遍历他的records,如多其中的ID存在我们的数组中那么我们就把这一条数据CheckBox选择上,具体的看代码
Ext.create('GenInventory.view.win').show();
Ext.getCmp('myWin').setTitle('库存类型');
var grid = Ext.getCmp('myGrid');
var selModel = grid.getSelectionModel();
var _this = this;
grid.selModel.addListener({
deselect: function (me, record, index, opts) {_this.deleteToArr(kclxArr,record.data);},
select: function (me, record, index, opts) {_this.addToArr(kclxArr,record.data);}
});
this.changeTitle(['编码','名称','hidden']);
var store = Ext.getStore('myGridStore');
store.removeAll();
store.proxy.extraParams={};
store.getProxy().setExtraParam('beId', beId);
store.getProxy().setExtraParam('branchId', whsId);
store.getProxy().setExtraParam('storerId', storerId);
store.getProxy().setExtraParam('type', 'KCLX');
store.loadPage(1);
store.addListener({
load: function (me, records, success, opts) {
if (!success || !records || records.length == 0){
return;
}
if(kclxArr.length==0){return;}
records.forEach(function(item){
for(var i=0;i<kclxArr.length;i++){
if(item.data.value1==kclxArr[i].value1){
selModel.select(item, true, true); // 不会触发选择事件
}
}
})
}
});
Ext.create('GenInventory.view.win').show();
Ext.getCmp('myWin').setTitle('库存类型');
var grid = Ext.getCmp('myGrid');
var selModel = grid.getSelectionModel();
var _this = this;
grid.selModel.addListener({
deselect: function (me, record, index, opts) {_this.deleteToArr(kclxArr,record.data);},
select: function (me, record, index, opts) {_this.addToArr(kclxArr,record.data);}
});
this.changeTitle(['编码','名称','hidden']);
var store = Ext.getStore('myGridStore');
store.removeAll();
store.proxy.extraParams={};
store.getProxy().setExtraParam('beId', beId);
store.getProxy().setExtraParam('branchId', whsId);
store.getProxy().setExtraParam('storerId', storerId);
store.getProxy().setExtraParam('type', 'KCLX');
store.loadPage(1);
store.addListener({
load: function (me, records, success, opts) {
if (!success || !records || records.length == 0){
return;
}
if(kclxArr.length==0){return;}
records.forEach(function(item){
for(var i=0;i<kclxArr.length;i++){
if(item.data.value1==kclxArr[i].value1){
selModel.select(item, true, true); // 不会触发选择事件
}
}
})
}
});