`

ExtJs中的CheckboxSelectionModel功能的完善

 
阅读更多

所谓说要完善CheckboxSelectionModel功能,其它是实现每行的CheckBox可以触发全选或者去全选。

 

说白了,就是当我们选中表中一行时,如果所有行都已经选中,那么头部的全选框会自动化选上,而如果表格全选中,把

 

其中一行去掉选择,而头部的全选框会自动去全选。

 

代码如下:

 

Ext.override(Ext.grid.CheckboxSelectionModel,{
		    onMouseDown : function(e, t){
				if(e.button === 0 && t.className == 'x-grid3-row-checker'){ // Only fire if left-click
					e.stopEvent();
					var row = e.getTarget('.x-grid3-row');

					// mouseHandled flag check for a duplicate selection (handleMouseDown) call
					if(!this.mouseHandled && row){
						//alert(this.grid.store.getCount());
						var gridEl = this.grid.getEl();//得到表格的EL对象
						var hd = gridEl.select('div.x-grid3-hd-checker');//得到表格头部的全选CheckBox框
						var index = row.rowIndex;
						if(this.isSelected(index)){
							this.deselectRow(index);
							var isChecked = hd.hasClass('x-grid3-hd-checker-on');
							//判断头部的全选CheckBox框是否选中,如果是,则删除
							if(isChecked){
								hd.removeClass('x-grid3-hd-checker-on');
							}
						}else{
							this.selectRow(index, true);
							//判断选中当前行时,是否所有的行都已经选中,如果是,则把头部的全选CheckBox框选中
							if(gridEl.select('div.x-grid3-row-selected').elements.length==gridEl.select('div.x-grid3-row').elements.length){
								hd.addClass('x-grid3-hd-checker-on');
							};
						}
					}
				}
				this.mouseHandled = false;
    },
	onHdMouseDown : function(e, t){
		/**
		*大家觉得上面重写的代码应该已经实现了这个功能了,可是又发现下面这行也重写了
		*由原来的t.className修改为t.className.split(' ')[0]
		*为什么呢?这个是我在快速点击头部全选CheckBox时,
		*操作过程发现,有的时候x-grid3-hd-checker-on这个样式还没有删除或者多一个空格,结果导致下面这个判断不成立
		*去全选或者全选不能实现
		*/
        if(t.className.split(' ')[0] == 'x-grid3-hd-checker'){
            e.stopEvent();
            var hd = Ext.fly(t.parentNode);
            var isChecked = hd.hasClass('x-grid3-hd-checker-on');
            if(isChecked){
                hd.removeClass('x-grid3-hd-checker-on');
                this.clearSelections();
            }else{
                hd.addClass('x-grid3-hd-checker-on');
                this.selectAll();
            }
        }
    }
	});

 

 

 

2
0
分享到:
评论
6 楼 moment52 2013-01-29  
lyndon.lin 写道
moment52 写道
如果我想去除那个全选按钮怎么去除呢

new Ext.grid.CheckboxSelectionModel({header :''})把header设置为空字符串即可

可以详细点吗,我用的是ext4

Ext.grid.CheckboxSelectionModel变成了Ext.Selection.CheckboxModel,然后我看API中根本就没你说的header这个config,还有我按你这样写了都没效果,
我是在grid中的selModel:new Ext.Selection.CheckboxModel({header:""});
这样根本不行
5 楼 lyndon.lin 2013-01-28  
moment52 写道
如果我想去除那个全选按钮怎么去除呢

new Ext.grid.CheckboxSelectionModel({header :''})把header设置为空字符串即可
4 楼 lyndon.lin 2013-01-28  
new Ext.grid.CheckboxSelectionModel({header :''})把header设置为空字符串即可
3 楼 moment52 2013-01-28  
如果我想去除那个全选按钮怎么去除呢
2 楼 qingBYqing 2011-08-18  
谢谢 
1 楼 qingBYqing 2011-08-18  

牙哥   请 问你  上面这段代码   直接 加入 到 ext-all.js 后面
可以用吗?  可以完善 CheckboxSelectionModel功能 吗

相关推荐

    弥补ExtJs CheckboxSelectionModel不能级联的自定义控件

    CheckboxSelectionModel是ExtJS中表格组件的一个重要部分,它允许用户通过复选框选择表格行。然而,原生的CheckboxSelectionModel并不支持级联选择,即选中父级复选框时,其子级复选框不会自动被选中。这在处理层级...

    extjs中文文档大全

    3. **Ext Core手册**:Ext Core是ExtJS的轻量级版本,保留了核心的组件和布局功能。对于那些只需要基本功能或者对加载速度有较高要求的项目,Ext Core是一个理想的选择。手册将详细解析Ext Core中的组件、DOM操作和...

    ExtJs 带清空功能的日期组件

    然而,标准的ExtJs DateField并未内置清空日期的功能,这可能会在某些应用场景中造成不便。为了解决这个问题,我们需要自定义一个扩展,为日期组件添加清空日期的能力。 首先,我们来了解一下ExtJs的DateField基本...

    ExtJs3.3中文API.CHM_extjs3.3中文文档_

    这个“ExtJS3.3中文API.CHM”文档是为中文用户特别准备的,帮助他们更好地理解和使用ExtJS 3.3的各种功能。 CHM文件,全称是Microsoft Compiled HTML Help,是微软推出的一种帮助文件格式,它将HTML文件打包成单一...

    Extjs 中文API文档

    Extjs 中文API文档,有对Extjs相关API的中文说明

    Extjs中文文档

    Extjs中文文档,包含Extjs的基本语法和各个类的详细说明以及用法。

    ExtjS实现聊天功能

    在这个"ExtJS实现聊天功能"的项目中,我们将探讨如何利用ExtJS框架构建一个类似于QQ的聊天应用程序。 首先,我们要理解聊天功能的核心要素。一个基本的聊天应用通常包含以下部分: 1. **用户界面**:ExtJS提供了...

    ExtJs 实例+ExtJs中文教程(学习extjs必备)

    在《ExtJs 实例》中,你将找到各种实际应用场景的代码示例,这些实例涵盖了ExtJs的各种组件和功能。通过学习这些实例,你可以更好地理解如何在实际项目中应用ExtJs,例如如何创建网格(Grid)、表单(Form)、树形...

    Extjs4登录功能+验证码+struts2

    在"Extjs4登录功能+验证码+struts2"这个主题中,我们将深入探讨如何利用ExtJS4构建一个带有验证码功能的登录界面,并结合Struts2后端框架实现数据验证和处理。 首先,登录功能是Web应用的基础部分,通常包含用户名...

    extjs中文帮助文档和英文api

    除了基本组件,ExtJS还提供了一些高级功能,比如AJAX支持、数据验证、拖放操作、国际化和本地化设置,以及强大的布局系统,能够满足开发者构建复杂、动态和响应式的Web应用需求。 在实际开发中,开发者可能会遇到的...

    EXTJS 多文件上传

    EXTJS 是一个强大的JavaScript 框架,专用于构建富客户端Web应用程序。在EXTJS中,`MultiFileUploadField` 是一个组件,它允许用户在单个操作中...通过合理利用这个组件,开发者可以快速构建出功能完善的文件上传功能。

    中文的Extjs的api手册

    手册中涵盖了ExtJS 3.3的所有类、方法、事件、属性和配置选项,对于开发者来说是不可或缺的工具。 1. **组件系统**:ExtJS的核心在于其组件模型,包括窗口(Window)、面板(Panel)、表格(Grid)、表单(Form)等...

    ExtJs菜单导航功能,不在用左边功能树

    在ExtJs开发中,构建用户界面时,菜单导航是一个至关重要的元素,它为用户提供了一种直观的方式来探索和操作应用的功能。传统的Web应用中,菜单通常会以树状结构出现在页面的左侧,但随着设计趋势的变化和技术的发展...

    extjs3.0中文API

    ExtJS 3.0中文API文档是对于这个版本的详细说明,帮助中国开发者理解和使用其各种功能。 首先,我们要理解API(Application Programming Interface)是什么。API是一组预定义的函数、类、对象和常量,允许开发人员...

    ExtJs+Dwr带分页分组传参后台排序功能的grid

    在本文中,我们将深入探讨如何实现一个基于ExtJS和Direct Web Remoting (DWR)的带分页、分组及后台排序功能的Grid组件。这个功能整合了多种技术,包括ExtJS、DWR、Spring和Hibernate,以创建一个高效且灵活的数据...

    extjs 树 搜索

    在EXTJS中,树形控件(Tree)是一种常见的数据展示方式,用于组织层次结构的数据。树形控件可以被广泛应用于文件系统、组织架构、菜单等场景。当我们需要在这些大量的层次数据中查找特定信息时,搜索功能就显得尤为...

    extjs打印功能

    在 ExtJS 中实现打印功能主要依赖于浏览器的打印功能以及对数据网格的处理。具体来说,可以通过以下几种方式来实现: 1. **利用浏览器内置的打印功能**:通过将需要打印的数据展示在一个页面中,然后触发浏览器的...

    Extjs 中文文档 很详细

    ExtJS中文文档,很好,很强大!绝对值得一看哦!

    ExtJs中文API

    ExtJs中文API,比较全面!并且提供了很多的例子!! ExtJs中文API,比较全面!并且提供了很多的例子!! ExtJs中文API,比较全面!并且提供了很多的例子!! ExtJs中文API,比较全面!并且提供了很多的例子!!

Global site tag (gtag.js) - Google Analytics