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

来源:互联网 发布:白头发怎么办 知乎 编辑:程序博客网 时间:2024/05/16 09:46

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


问题描述:当在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<total;i++){var rec=store.getAt(i);if(collection.containsKey(rec.get('id'))){array.push(i);}}sm.selectRows(array);});     selectedNewsTag : function(){       if(this.collection.getCount() == 0){            showMsg('', '<fmt:message key="track.keyword.noSelected"/>');            return;        }          <!-- 解决分页保持选中功能,从collect里面拿数据,不要从sm里面拿 -->               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('', '<fmt:message key="track.keyword.noSelected"/>');            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();    },



0 0
原创粉丝点击