最近在查看自己写的程序时,发现在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会添加重复内容,我也写了一个去掉重复内容的方法,但在分页中只能选中一次,郁闷中。。。