说明:勾选某几条记录后,翻页再翻回来,保持原来的选中状态。
原理:在勾选或取消勾选的时候用recordIds保存或删除勾选中的Record的主键id值,
每次store加载(load事件)完后,遍历store,比较每条Record的主键列id是否在recordIds中,
若存在则将Record保存到临时变量records中,最后调用selMod.selectRecords(records, true);
写Array的remove与contains方法,搞得有点像java.util.HashSet(不让Array存重复值)
function RemoveArray(array,attachId){
for(var i=0,n=0;i<array.length;i++){
if(array[i]!=attachId){
array[n++]=array[i]
}
}
array.length -= 1;
}
function containsArray(array,attachId){
for(var i=0;i<array.length;i++){
if(array[i]==attachId){
return true;
break;
}
}
return false;
}
Array.prototype.remove = function (obj) {
return RemoveArray(this,obj);
};
Array.prototype.contains = function (obj) {
return containsArray(this,obj);
};
var recordIds=new Array();// 选中的Record主键列id列表
var recordsChecked=new Array();// 选中的Record列表
var store = new Ext.data.JsonStore({
url : 'viewXXX.do',
pruneModifiedRecords : true,
totalProperty : 'totalProperty',
root : 'root',
fields : [{name : 'id'},
{name : 'status'}
],
listeners : {
load : function() {
var records = new Array();
store.each(function(record) {
if (recordIds.contains(record.data.id))
records.push(record);
});
selMod.selectRecords(records, true);// 以后每次load数据时,都会默认选中
}
}
});
var selMod = new Ext.grid.CheckboxSelectionModel({
handleMouseDown : Ext.emptyFn,
listeners : {
"rowdeselect" : {
fn : function(e, rowIndex, record) {
if (recordIds.contains(record.data.id)) {
recordIds.remove(record.data.id);
recordsChecked.remove(record);
}
}
},
"rowselect" : {
fn : function(e, rowIndex, record) {
if (!recordIds.contains(record.data.id))
recordIds.push(record.data.id);
recordsChecked.push(record);
}
}
}
});
本文介绍如何使用ExtJS实现表格中记录的选中状态跨页面持久化。通过保存和加载选中记录的ID来确保即使翻页后再次返回也能保持相同的选中状态。
1785

被折叠的 条评论
为什么被折叠?



