解决grid选中行分页后不保持的问题(实现分页多选记忆功能)

  ---------注:本博客中的代码并不能直接运行,只是用做举例,只用做说明工作中遇到的问题--------


问题描述:当在grid中选择某行记录时,再翻页,每一次翻页,其它页面的选中行就消失了

    a.定义一个全局的collection变量,保存选中的所有行

    b.定义checkbox的勾选事件,每当选中一行记录时,就将这条记录插入到collection里面。

    c.定义checkboc的取消勾选事件,每当取消一行记录时,从collection里删除该选中。

    d.数据加载的时候(分页),遍历该页的所有数据是否存在于collection里面,是的话,则保持勾选。

     这样只是解决了分页后复选框勾选的选中状态,要想将数据拿到不要从sm里面遍历选中,而是从collection里面遍历,取出collectonvalue部分。

    
       this.collection= new Ext.util.MixedCollection();
      var grid=this.resultGrid;
     var collection=this.collection;
	//处理checkbox的勾选事件 
	this.resultGrid.getSelectionModel().on('rowselect', function(sm, rowIdx,r){ 
		var record=grid.getStore().getAt(rowIdx);
		collection.add(record.get('id'),record.data);
	}); 
	//处理checkbox的取消勾选事件 
	this.resultGrid.getSelectionModel().on('rowdeselect', function(sm, rowIdx,r){ 
		var record=grid.getStore().getAt(rowIdx);
		collection.remove(collection.get(record.get('id')));
	});

	//数据加载的时候,选中集合里面已存在的记录
	
	this.resultStore.on('load',function(store,options){
		var total=store.getCount();
		var array=new Array();
		for(var i=0;i');
            return;
        }
          
       
        var tags='';    
        for(var i=0;i < this.collection.getCount();i++){
            if(i>0){
               tags = tags + ','+this.collection.get(i).tag;
            }else{
              
               tags = this.collection.get(i).tag;
            }
        }
        <%-- if(this.resultGrid.selModel.getSelections().length == 0){
            showMsg('', '');
            return;
        }
        
        var dataLength = this.resultGrid.selModel.getSelections().length;
        var index=0;
        var tags='';
        for(var i=0;i < dataLength;i++){
            if(i>0){
               tags = tags + ','+ this.resultGrid.selModel.getSelections()[i].data.tag;
            }else{
               tags = this.resultGrid.selModel.getSelections()[i].data.tag;
            }
        } --%>
        Ext.getCmp(this.columnName + this.contentId).setValue(tags);
        this.close();
    },

 
  

你可能感兴趣的:(工作,Extjs)