最近在查看自己寫的程序時,發現在grid中的CheckboxModel,在跨分頁無法選中,比如,在我第一頁選了兩條記錄,然後點擊下一頁後,grid裏的store會load下,這時在回到第一頁時,grid裏的store又會load下,而且以前選中的,無法選中。
我在網上查了一下,發現翻頁時,load事件,會執行CheckboxModel控件裏的deselectAll方法,這樣在beforeload時去deselect這個事件,然後在load事件後加上deselect事件。
代碼如下:
var selfarray = [];
var recordids = Ext.create('Ext.util.MixedCollection', {});
var deSelection = function(sm, record) {
recordids.remove(record.data.id);
};
var sm = Ext.create("Ext.selection.CheckboxModel", {
checkOnly : true,
listeners : {
select : function(me, record, o) {
recordids.add(record.data.id, record.data.id);
},
deselect : deSelection
}
});
var store = Ext.create('sj.zxprojectbaseinfo.ZxprojectbaseinfoStore', {
listeners : {
beforeload : function(store, operation, o) {
sm.removeListener('deselect', deSelection);
},
load : function(store, records, successful) {
sm.removeListener('deselect', deSelection);
store.each(function(record) {
recordids.each(function(item) {
if (record.data.id == item) {
selfarray.push(record);
}
})
})
sm.select(selfarray, true);
sm.addListener('deselect', deSelection);
}
}
})
但這樣數組selfarray會添加重複內容,我也寫了一個去掉重複內容的方法,但在分頁中只能選中一次,鬱悶中。。。