所谓说要完善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();
}
}
}
});
分享到:
相关推荐
ExtJs 的日期控件不带清空功能,项目有可能需要一个带清空功能的日期控件。
Extjs中文文档,包含Extjs的基本语法和各个类的详细说明以及用法。
Extjs 中文API文档,有对Extjs相关API的中文说明
extjs中文api,提供实例extjs中文api,提供实例extjs中文api,提供实例extjs中文api,提供实例extjs中文api,提供实例extjs中文api,提供实例
Extjs4登录功能+验证码+struts2
ExtJS中文文档,很好,很强大!绝对值得一看哦!
ExtJs中文API,比较全面!并且提供了很多的例子!! ExtJs中文API,比较全面!并且提供了很多的例子!! ExtJs中文API,比较全面!并且提供了很多的例子!! ExtJs中文API,比较全面!并且提供了很多的例子!!
NULL 博文链接:https://brooke.iteye.com/blog/1477860
ExtJs 实例+ExtJs中文教程 大量ExtJs的实例和目前最好的ExtJs中文教程,学习ExtJs的朋友可以参考一下
Extjs框架实现类似QQ的聊在功能.好友上线,下线提醒.留言,发表情,来消息提醒等功能
绝对的ExtJS3.0中文API,本人在网上找了好久才找到的,在此奉献给大家!!解压后有30多兆!!
Hibernate+Spring+Struts2+ExtJS开发CRUD功能
extjs3.3的中文文档
Struts2+Spring+Hibernate+ExtJS开发CRUD功能
1、本人上传过两个关于ExtJS6开发的文档,得到了各位的积极评价,有好几位还发邮件或加qq进一步交流,大家的进步就是我最大的快乐; 2、教程是入门教程,知识点全面,推荐给初学者; 3、如果大家按照文档一步步照做...
extjs4.1 中文API
新手学习,初学extjs时用刚刚好,里边有三个例子,还有一个我自己写的例子(简单粗暴动态菜单),还有一个中文API
收集了ExtJS中文站上的资料,共52篇文章,保留了文章的原始风貌,支持关键字查询,里面的内容可以选择后ctrl-C拷出来。赚个辛苦分。
1、本人上传过两个关于ExtJS6开发的文档,得到了各位的积极评价,有好几位还发邮件或加qq进一步交流,大家的进步就是我最大的快乐; 2、教程是入门教程,知识点全面,推荐给初学者; 3、如果大家按照文档一步步照做...