extjs翻页多选保留

--extjs翻页多选
//1、定义保存选中记录(翻页)的集合

var collection=new Ext.util.MixedCollection();

 

//2、定义选中记录的CheckboxSelectionModel

var sm = new Ext.grid.CheckboxSelectionModel({singleSelect : false,
  listeners : {
    'rowselect' : function(sm, colIndex, row) {//选中勾选框
      collection.add(row.get("dataIndex1"), row);
    },
    'rowdeselect' : function(sm, colIndex, row) {//取消勾选框
      collection.remove(collection.get(row.get("dataIndex1")));
    } 
  }
});

 



//3、定义store,从后台获取数据,同时进行监听-->加载,若后台中的数据在保存选中记录(翻页)的集合存在,设置勾选

store = new Ext.data.Store({
  listeners: {
'    load': function (records) {
      records = records.reader.jsonData.result;
      if (records.length == 0)
        return;
      var selModel = this.gridPanel1.getSelectionModel();
      for (var i = 0; i < records.length; i++) {
        var record = records[i];
        for (var j = 0; j < collection.getCount(); j++) { 
          if (record.dataIndex1 == collection.items[j].data.dataIndex1) {
            selModel.selectRow(i);//若保存选中记录(翻页)的集合存在,设置勾选
          }
        }
      }
    }.createDelegate(this)
  }
});    

 



//4、将定义好的store、sm填充到grid下

this.grid = new Ext.grid.GridPanel({
  split :true,
  enableColumnMove : false,
  enableColumnHide : false,
  title : title,
  store : m_store,
  bbar : new Ext.PagingToolbar({ 
    xtype : 'paging',
    pageSize    : 20,
    store:m_store,
    displayInfo:true, 
    displayMsg:'显示第 {0} 条到 {1} 条记录,一共 {2} 条', 
    emptyMsg:'没有记录'
  }),
  columns : [sm,
    {header : 'header1',dataIndex : 'dataIndex1', align:'center', sortable : true},
    {header : 'header2',dataIndex : 'dataIndex2', align:'center', sortable : true}
  ],
  selModel : sm
});

 

posted @ 2021-06-10 21:38  微微江水  阅读(264)  评论(0)    收藏  举报