Extjs grid 分页多选 数据不会丢失

来源:互联网 发布:淘宝360度主图怎么做 编辑:程序博客网 时间:2024/06/05 20:20
用 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); // 不会触发选择事件
    }
    }
   
    })
    }
    });
原创粉丝点击