关于ext中使用 Ext.grid.CheckboxSelectionModel作为选择框如何保存选中记录的解决方法。

1 篇文章 0 订阅
//关于ext中使用 Ext.grid.CheckboxSelectionModel作为选择框如何保存选中记录的解决方法。


//开发中jsp中用Ext.grid.CheckboxSelectionModel(以下简称sm)遇到以下问题,
//勾选后刷新或者跨页后返回勾选消失,并且只能对当前页的数据进行操作。
//解决方法如下:
var collections=[];//勾选记录和向后台传值的的集合。
var ccjzjl=[];//初次加载用以记录是否被首次加载过的,因为该项目中之前已经选过的记录首次加载时候应该自动加载上
//设置Ext.data.DirectStore
// 数据访问
var store = new Ext.data.DirectStore({
//具体设置省略
});


//设置sm
var sm = new Ext.grid.CheckboxSelectionModel({
   singleSelect:false,//允许多选  
   listeners:{//监听事件当选中时候把记录放进集合,取消选中时候取出集合
    rowselect:function(g,rowIndex,e){
       var row=grid.getStore().getAt(rowIndex);
    var kprxx=row.get('gzbm')+','+row.get('djbm');
    if(collections.indexOf(kprxx)==-1){//没有才会添加,有才会取出
    collections.push(kprxx);
    }
       },
rowdeselect:function(g,rowIndex,e){
var row=grid.getStore().getAt(rowIndex);
var kprxx=row.get('gzbm')+','+row.get('djbm');
if(collections.indexOf(kprxx)!=-1){
    collections.remove(kprxx);
    }
}
}
}); 
//设置列
var columns = [sm, {//sm作为一列
"id" : "gzbm",
"dataIndex" : "gzbm",
"header" : "工种编码",
"sortable" : false,
"anchor":"100%",
width : 120
}, {
"id" : "gzmc",
"dataIndex" : "gzmc",
"header" : "工种名称",
"sortable" : false,
width : 120
}, {
"id" : "djbm",
"dataIndex" : "djbm",
"header" : "等级编码",
"sortable" : false,
width : 120
}, {
"id" : "djmc",
"dataIndex" : "djmc",
"header" : "考核等级",
"sortable" : false,
width : 120
}];
//设置store加载时的监听事件
store.on('load', function(t,records,o){

if(records.length>0){
for(var i=0;i<records.length;i++){
var kprxx=records[i].get("gzbm")+','+records[i].get("djbm");
if(records[i].get("sz")==1&&ccjzjl.indexOf(kprxx)==-1){
    ccjzjl.push(kprxx);//如果此条记录中sz为1为应初次加载,初次加载则放进初次加载集合
//再次刷新等操作后便不会再加载,保证了应该初次加载的会自动加载一次
    collections.push(kprxx);
   }
}
}
//加载的时候,根据临时变勾选  
var total = store.getCount();//数据行数  
      for(var i=0;i<total;i++){  
      var a=i+1;
              var row=store.getAt(i);  
              var kprxx=row.get("gzbm")+','+row.get("djbm");
              if(collections.indexOf(kprxx)!=-1){  //collections集合里有的会自动加载
              grid.getSelectionModel().selectRow(i,true);
       }  
    } 

});
//设置Ext.grid.GridPanel
var grid = new Ext.grid.GridPanel({
//其他设置省略
sm : sm,//sm这里又作为grid的部分
columns : columns,
store : store,
});
//设置后台传值
for(var i=0;i<collections.length;i++){//从collections中取出
var xx=[];
xx=collections[i].split(",");
if(i==0){
gzbm=xx[0];
djbm=xx[1];
}else{
gzbm=gzbm+","+xx[0];
djbm=djbm+","+xx[1];
}
}
//这样选择框就变得有记忆功能了。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值