说明:勾选某几条记录后,翻页再翻回来,保持原来的选中状态。
原理:在勾选或取消勾选的时候用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);??
- ????????????????????????}??
- ????????????????????}??
- ????????????????}??
- ????????????}); ?