`
fireinjava
  • 浏览: 483404 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Ext的CheckboxSelectionModel默认选中

    博客分类:
  • Ext
阅读更多

说明:勾选某几条记录后,翻页再翻回来,保持原来的选中状态。

原理:在勾选或取消勾选的时候用recordIds保存或删除勾选中的Record的主键id值,
   每次store加载(load事件)完后,遍历store,比较每条Record的主键列id是否在recordIds中,
   若存在则将Record保存到临时变量records中,最后调用selMod.selectRecords(records, true);
  
写Array的remove与contains方法,搞得有点像java.util.HashSet(不让Array存重复值)

function RemoveArray(array,attachId){
    for(var i=0,n=0;i<array.length;i++){
        if(array[i]!=attachId){
            array[n++]=array[i]
        }
    }
    array.length -= 1;
}
function containsArray(array,attachId){
    for(var i=0;i<array.length;i++){
        if(array[i]==attachId){
            return true;
            break;
        }
    }
   return false;
} 
Array.prototype.remove = function (obj) {
    return RemoveArray(this,obj);
}; 
Array.prototype.contains = function (obj) {
    return containsArray(this,obj);
}; 

 

var recordIds=new Array();// 选中的Record主键列id列表
var recordsChecked=new Array();// 选中的Record列表

var store = new Ext.data.JsonStore({
				url : 'viewXXX.do',
				pruneModifiedRecords : true,
				totalProperty : 'totalProperty',
				root : 'root',
				fields : [{name : 'id'}, 
						  {name : 'status'}
						  ],
				listeners : {
					load : function() {
						var records = new Array();
						store.each(function(record) {
							if (recordIds.contains(record.data.id))
								 records.push(record);
						});
						selMod.selectRecords(records, true);// 以后每次load数据时,都会默认选中
					}
				}
			});
	
	var selMod = new Ext.grid.CheckboxSelectionModel({
		handleMouseDown : Ext.emptyFn,
				listeners : {
					"rowdeselect" : {
						fn : function(e, rowIndex, record) {
							if (recordIds.contains(record.data.id)) {
								recordIds.remove(record.data.id);
								recordsChecked.remove(record);
							}
						}
					},
					"rowselect" : {
						fn : function(e, rowIndex, record) {
							if (!recordIds.contains(record.data.id))
								recordIds.push(record.data.id);
							recordsChecked.push(record);
						}
					}
				}
			});

 

5
0
分享到:
评论
2 楼 fireinjava 2012-09-07  
fyjxhsnagbo 写道
作者还在不啊,有问题请教,为什么我用相同的方法第一次带出全选的效果然后突然一下又没了,但是recordIds里面有数据,再点一下toolbar的刷新按钮或者往后一页再回来都有全选的效果,就只有第一次带出全选效果的时候突然下没了

会不会是load事件执行后,其它地方有操作了啥引起的.
1 楼 fyjxhsnagbo 2012-09-04  
作者还在不啊,有问题请教,为什么我用相同的方法第一次带出全选的效果然后突然一下又没了,但是recordIds里面有数据,再点一下toolbar的刷新按钮或者往后一页再回来都有全选的效果,就只有第一次带出全选效果的时候突然下没了

相关推荐

    EXT学习心得,ext

    记住,在使用CheckboxSelectionModel时,必须明确指定`sm: sm2`,否则默认为单选模式。 #### 下拉框事件处理 在EXT中,下拉框(ComboBox)的事件处理可以通过`on`方法绑定事件监听器。例如,当`bankFullName`...

    Ext常用功能开发总结

    #### 表格复选框默认选中的实现 利用`selModel`的`checked`属性,可以在初始化时指定哪些行默认被选中。 #### 表格顶端工具条 通过`dockedItems`配置,添加`Ext.toolbar.Toolbar`到表格顶部,可包含按钮、下拉框等...

    Ext2.0示例讲解

    扩展到更复杂的需求,例如在表格中添加CheckBox选中功能,可以创建一个CheckboxSelectionModel并将其添加到ColumnModel中: ```javascript var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid...

    第三方控件Coolite使用教程

    为了在表格中添加CheckBox选中功能,我们需要创建一个CheckboxSelectionModel实例,并将其添加到ColumnModel中: ```javascript var sm = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid....

    combobox Ext之扩展组件多选下拉框

    - 如果需要在下拉列表中显示复选框,可以使用`checkboxSelectionModel`作为列表的`selModel`,并根据需要配置相关属性,如`showHeader`(是否显示列头,列头中包含复选框)。 5. **值的管理**: - `value`:多选...

    Extjs 增删改查

    - `sm`:选择模型(Selection Model),默认为CheckboxSelectionModel,允许多选。 2. **ColumnModel 配置** - `cmDataArrayBefore`:定义Grid最左侧的列配置,如行号列和选择列。 - `cmDataArray`:包含自定义...

Global site tag (gtag.js) - Google Analytics