论坛首页 Web前端技术论坛

Extjs Grid 带分页多选时的某种解决方案。

浏览 5378 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-02-10  
  使用情况:使用Extjs的Grid时使用远程分页时有一个问题,就是当翻到下一页时上一页中选中的内容会被清除。
  我的解决方案:建立一个Extjs的Collection用于存储,当然这里需要存储的是数据库中的主键值,当选中Grid中的多选框时,把主键加入Collection,取消选择时则把主键从Collection中删除,提交时就提交Collection中内容。
  建立Collection。
 
  var collection=new Ext.util.MixedCollection();
  


  点击Grid时发生cellclick事件,sm是CheckboxSelectionModel。
  
   var row=grid.getStore().getAt(rowIndex);
		        if(sm.isSelected(rowIndex)){
		            collection.add(row.get('主键'),{id:row.get('主键'),name:row.get('其他字段')});	
		        }else
		        {
		        	collection.removeKey(row.get('主键'));
		        }
  


  翻页时。
  
  var total = store.getCount();//数据行数
			   for(var i=0;i<total;i++){
							  var row=store.getAt(i);
							  if(collection.containsKey(row.get('主键'))){
							    grid.selModel.selectRow(i,true);
							  }
						   }  

 
   发表时间:2011-02-14  
azure2a 写道
  使用情况:使用Extjs的Grid时使用远程分页时有一个问题,就是当翻到下一页时上一页中选中的内容会被清除。
  我的解决方案:建立一个Extjs的Collection用于存储,当然这里需要存储的是数据库中的主键值,当选中Grid中的多选框时,把主键加入Collection,取消选择时则把主键从Collection中删除,提交时就提交Collection中内容。
  建立Collection。
 
  var collection=new Ext.util.MixedCollection();
  


  点击Grid时发生cellclick事件,sm是CheckboxSelectionModel。
  
   var row=grid.getStore().getAt(rowIndex);
		        if(sm.isSelected(rowIndex)){
		            collection.add(row.get('主键'),{id:row.get('主键'),name:row.get('其他字段')});	
		        }else
		        {
		        	collection.removeKey(row.get('主键'));
		        }
  


  翻页时。
  
  var total = store.getCount();//数据行数
			   for(var i=0;i<total;i++){
							  var row=store.getAt(i);
							  if(collection.containsKey(row.get('主键'))){
							    grid.selModel.selectRow(i,true);
							  }
						   }  

 

0 请登录后投票
   发表时间:2011-02-15  
大家都用的方法,基本是这么解决的。
0 请登录后投票
   发表时间:2011-02-15  
我碰到了这个问题,谢谢分享,一会试试
0 请登录后投票
   发表时间:2011-02-15  
有个问题是。如果数据本身在变化。比如你在翻到第二页页的时候,第一页有一条记录在别处删除了。这样导致最终提交的数据不正确。
0 请登录后投票
   发表时间:2011-02-17  
正在进行此类问题的学习,提前学习了!
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics