Ext js 4 全选和反选

Ext.js 4 部分基础内容学习记录 ext.js 4 阅读详情

Ext版本:4.2

相信经常做Grid的一定遇到全选和反选吧,虽然Ext里有SelectionMode可以直接使用,但是面对较复杂的业务,SelectionMode也力不从心

于是自己定义一个CheckBox来自己添加全选反选功能,注意这里是反选是选择相反的,而不是英文的取消选择的意思

1,先在Grid的columns里定义一个dom的CheckBox,同时给一个ID

ValuePanel = new Ext.grid.GridPanel({
            width: 200,
            tbar: [{
                xtype: 'checkboxgroup',
                vertical: true,
                width: 100,
                id:'CheckAll',
                items: [{
                    boxLabel: '全选', name: 'rb1', inputValue: '1', handler: function (a, v) {
                        if (a.checked == true) {
                            SelectAllToFieldList();
                            RefeshValue();
                        }
                        
                    }
                }, {
                    boxLabel: '反选', name: 'rb2', inputValue: '2', handler: function (a, v) {
                        if (a.checked==true) {
                            DeselectAllToFieldList();
                            RefeshValue();
                        }
                        
                    }
                }]
            }],
            region: "center",
            xtype: 'grid',
            store: storeFieldList,
            columns: [
                {
                    text: '选择', dataIndex: 'IsChecked', width: 35, renderer: function (v, r, s, i) {
                        var html = '<input id="cb_' + r.record.get('Key') + '" onclick="paraCheckBoxClick(this)" type="checkbox" />';
                        return html;
                    }
                },
                { text: '键', dataIndex: 'Key', hidden: true },
                { text: '参数字段', dataIndex: 'Value', width: 400 }],
            listeners: {
                itemdblclick: function (a, b, c, d, e) {
                    // 双击选择
                    Ext.getCmp('CheckAll').setValue({ rb1: false, rb2: false });
                    var cb = document.getElementById('cb_' + b.get('Key'));
                    cb.checked = !cb.checked;
                    if (cb.checked) {
                        AddFieldList(b.get('Key'));
                    } else {
                        DelFieldList(b.get('Key'));
                    }
                    RefeshValue();
                }
            }
 });

2,写相应的方法 

Array.prototype.baoremove = function (dx) {
    if (isNaN(dx) || dx > this.length) { return false; }
    this.splice(dx, 1);
}

function paraCheckBoxClick(cb) {
    // 取得Key
    var Key = cb.id.substr(3, cb.id.length - 3);
    if (cb.checked) {
        AddFieldList(Key);// 添加Key到list列表
    } else {
        DelFieldList(Key);// 删除Key到list列表
    }
    RefeshValue();// 刷新数据
}

// 已经选择的参数字段列表
var FieldList = [];

// 找到ID
function FindFieldListIDByKey(Key) {
    for (var i = 0; i < FieldList.length; i++) {
        if (FieldList[i] == Key) { return i; }
    }
    return -1;
}

// 添加已经选择的参数字段列表
function AddFieldList(Key) {
    if ($.inArray(Key, FieldList) < 0) {
        FieldList.push(Key);
    }

}
// 删除已经选择的参数字段列表
function DelFieldList(Key) {
    FieldList.baoremove(FindFieldListIDByKey(Key));
}

// 设置选项为选中状态
function SetChecked() {
    for (var i = 0; i < storeFieldList.data.length; i++) {
        // 取得要修改的数据对象的Key
        var Key = storeFieldList.getAt(i).get('Key');
        for (var j = 0; j < FieldList.length; j++) {
            if (FieldList[j].toUpperCase() == Key.toUpperCase()) {
                // 设置相关数据的IsChecked为当前选择框的Checked
                document.getElementById('cb_' + Key).checked = true;
            }
        }
    }
}
// 全选
function SelectAllToFieldList() {
    // 初始化list
    //FieldList.length = 0;

    // 设置当前页面为全选
    for (var i = 0; i < storeFieldList.data.length; i++) {
        // 取得要修改的数据对象的Key
        var Key = storeFieldList.getAt(i).get('Key');
        document.getElementById('cb_' + Key).checked = true;
        AddFieldList(Key);
    }

}

// 反选
function DeselectAllToFieldList() {

    // 设置当前页面为反选
    for (var i = 0; i < storeFieldList.data.length; i++) {
        // 取得要修改的数据对象的Key
        var Key = storeFieldList.getAt(i).get('Key');
        var cb = document.getElementById('cb_' + Key);
        document.getElementById('cb_' + Key).checked = !cb.checked;
        if (cb.checked) {
            AddFieldList(Key);
        } else {
            DelFieldList(Key);
        }
    }

}


[Ext JS 4] 实战之多选下拉单 (带checkbox) 续 - 带ALL 选项 在 [Ext JS 4] 实战之多选下拉单 (带checkbox) 这一篇中有介绍如何开发带有checkbox 的多选菜单。 但是实际项目开发过程中, 用户的需求也是不断精进的。 使用淘宝或是其他网站购物车功能的用户对全选就特别习惯, 所以他们也希望在下拉单中也能有 "ALL" 这样的选项。 但是Extjs 本身提供的多选下拉单,功能比较有限。 之前有扩充过带 checkbox, 现在又要多扩充一个 "ALL" 选项了。 阅读详情

相关推荐

[Ext JS 4] 实战之多选下拉单 (带checkbox)

Ext js 创建一个多选下拉单的方式很简单, 使用Ext.form.ComboBox, 设置 multiSelect 为true 就可以了。 但是如果要在每个下拉之前加上一个checkbox, 如何实现呢? ComboBox本身没有这样的配置, 有一个 “Ext.ux.form.MultiSelect” 这样一个扩展, 效果的话,是把选项全部显示出来。 没办法只能自己扩展一个这样的组件了。

oscar999的专栏 1万+

Extjs6 多选远程下拉带全选全不选功能

网上找了不少例子感觉都不满足需要,于是参照别人的案例自己写了一个半自动的案例,虽然不够智能,但是个人感觉还行。//All为store.insert中配置的valueField属性对应的值。//此处为valueField对应的属性。

qq_20952737的专栏 532

extjs4带全选复选框的下列表(有bug)

1、解压,进入extjs4.2.1\examples\form,浏览器打开 hbox-form.html 文件,当我勾选中任意一个多选下拉框,然后再勾选‘ALL’时,‘ALL’却是不被选中的状态,且输入框里没有值 2、下拉列表选择功能的js代码在下面文件里: extjs4.2.1\examples\form\MultipleComboBox.js

ExtJS4学习笔记(八)---Grid多选/全选

上一篇文章,在Grid中加入了搜索功能(链接地址是:www.mhzg.net/a/20115/20115219110248.html),但大量数据需要删除操作的时候,总不能一条一条去删除吧,本文介绍如何在Extjs4 Grid中加入全选功能。 先来张效果图: 点击显示

nuoyan666的专栏 4308

解决ext下拉列表全选和去全选功能

NULL 博文链接:https://shuixian.iteye.com/blog/1329333

ext多选下拉列表的全选功能实现

NULL 博文链接:https://leonel.iteye.com/blog/454174

Ext ComboBox 实现下拉多选,全选,反选

Ext ComboBox下拉选中-全选反选逻辑处理 Ext ComboBox 实现下拉多选,全选,反选 方法一: 代码 var me = this; var isMultiSelect = true;//是否设置为下拉多选 me.selectValues = [];//保存被选中的数据 var factory_Store = Ext.create('Ext.data.Store', { ...

baidu_31134013的博客 5971

extjs带复选框的树包括全选 反选 子选父以及 父选子

extjs带复选框的树包括全选 反选 子选父以及 父选子 与adf在jsp页面得应用 包含了工具类以及针对extjs树节点增加、删除、修改的工具方法

Ext 中的checkGroup实现的全选与反选功能

function getCheckAll(e){ var myCheckboxGroup=Ext.getCmp('mycheckGroup'); if(e.checked){ var length = myCheckboxGroup.items.getCount(); var all = ...

weixin_34008933的博客 259

快速修改Petalinux编译生成的rootfs.cpio.gz文件:无需重新编译的实用技巧

本文详细介绍了如何在不重新编译的情况下快速修改Petalinux生成的rootfs.cpio.gz文件,适用于Zynq平台开发。通过解包image.ub、修改rootfs内容并重新打包的完整流程,可显著提升调试效率,特别适合频繁修改配置文件的场景。文章还提供了自动化脚本和进阶应用技巧,帮助开发者优化工作流程。

weixin_28285943的博客 239

MIT Mini Cheetah--仿真流程

MIT Mini Cheetah–仿真 摘要 由于官方提供代码中,控制仿真环境中的猎豹机器人运动需要遥控器来控制。官方默认推荐使用logitech Gamepad F310游戏手柄:We use the Logitech F310 controller. There’s a switch in the back, which should be in the “X” position. The controller needs to reconnected if you change the switch

Galaxy_Robot的博客 5916

Javascript全选,反选,全不选

[url]http://www.cnblogs.com/shige/archive/2009/02/10/1387020.html[/url] Ext 4.0 API [url]http://docs.sencha.com/ext-js/4-0/#!/api[/url] [code="javascript"] function checkEvent(name,allChe...

macleo的路 174

八股已死、场景当立(Docker篇)

本文总结了Docker相关的面试八股文,重点介绍了Docker在Java开发中的应用。主要内容包括:Docker容器与虚拟机的区别及其对Java应用性能的影响;如何为Java应用构建优化镜像;Docker常用命令在Java容器管理中的使用;Docker网络模式与数据卷在Java微服务中的配置;使用Docker Compose部署Java+MySQL微服务的方法;以及为Java应用配置健康检查的重要性。文章还通过具体示例说明了Nginx容器挂载、日志收集等常见场景的实现方式,为Java开发者提供了实用的Doc

qq_55253420的博客 714

【全开源】旅行吧旅游门票预订系统源码(FastAdmin+ThinkPHP+Uniapp)

此外,系统还会根据我的旅行计划和喜好,为我推荐合适的景点和门票,让我的旅行更加丰富多彩。旅游门票预订系统的出现,不仅简化了门票预订的流程,还提高了旅行的便捷性和效率。一款基于FastAdmin+ThinkPHP+Uniapp开发的旅游门票预订系统,支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统,提供前后台无加密源码,支持私有化部署。如今,有了旅游门票预订系统,这些问题都能迎刃而解。智能推荐:系统还会根据你的旅行计划和喜好,为你推荐合适的景点和门票,让你的旅行更加丰富多彩。

2401_84413757的博客 1301

嵌入式学习的书单推荐

以上是一些优秀的嵌入式学习书单推荐。选择适合自己的学习材料对于学习嵌入式系统非常重要。每一本书籍都有其独特的优势和特点,读者可以根据自己的学习目标和兴趣选择合适的书籍。同时,我们也要注意不断实践和探索,结合实际项目和项目经验,不断提升自己的嵌入式技术水平。希望本文的推荐能够帮助大家在嵌入式学习的道路上取得更好的成果。

新程序圆 1980

Ext Core实现Checkbox的全选

1,新建一个 check_all_none.html. 全选/不选在很多时候我们都会使用到,在Ext Core出来之前,我一直使用纯javascript写的全选,反选.虽然可以实现,但代码始终还是不够简洁.现在我们使用Ext Core,简单的几句代码就可以实现这一个功能. 实现方法如下: http://www.w3.org/TR/html4/loose.dtd"> 选中列表中的

JecksonChenJinHua的专栏 1390

Qt之自定义QToolTip,去掉显示动画和隐藏延时

先来看看Qt原生QToolTip的缺点:1.当提示内容无变化时,弹窗无法移动。只能先传个空字符串强制弹窗隐藏,然后在新位置再传个字符串。2.默认显示10多秒才消失,当然这个时间是可以设置的,但是如果我想一直显示呢?总不能设置一个超级大的时间吧。3.鼠标移出控件后(调用QToolTip::showText时传入了控件指针)默认300毫秒弹窗才隐藏。而且这个时间没法设置,如果想立即隐藏就没办法了。

草上爬的博客 4268

Ext Js4 CheckBox学习与实例

1:程序代码   <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getSer

张波的技术积累 6047

1位2路选择器设计

1位2路选择器设计

好好学习,天天向上 3577

基于滤波反投影的图像重建算法matlab仿真

基于滤波反投影的图像重建算法是一种用于医学影像重建的计算机辅助技术。该算法可以从投影数据中重建出高质量的三维图像,被广泛应用于医学影像学、CT、PET等领域。本文将详细介绍基于滤波反投影的图像重建算法的原理、步骤和应用。一、原理介绍基于滤波反投影的图像重建算法基于X射线CT成像原理,它的主要思想是通过对投影数据进行处理,反推出被成像物体的三维形状。其核心原理是投影数据与目标物体之间的线性关系,即通过估计目标物体的吸收率来计算投影数据的变化,从而反推出目标物体的三维形状。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 386

Extjs 4.2 树结点右键菜单(全选,反选,撤销)

自己写的最新版本extjs4.2的树结点的操作,记录一下,以后可能会用到。 var tree = new Ext.tree.TreePanel({ flex: 1, animate: true,   autoScroll: true, anchor: '100% 93%', store: new Ext.data.TreeStore({ root:{ expanded: true

Primary_wind的专栏 6252

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Ext.Net 1.2.0_Ext.Net.CheckboxGroup 勾选、全选、反选和限制勾选

本文内容 演示 CheckboxGroup 勾选、全选、反选和限制勾选 运行结果 说明 修改记录   演示 CheckboxGroup 勾选、全选、反选和限制勾选 脚本 &lt;script type="text/javascript" defer="defer"&gt; ConstraintChkedNum = ...

weixin_34120274的博客 176

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Ext.js4 扩展开发指南(一)

在这个现代的 JavaScript 世界中,Ext JS 提供了一大批跨浏览器实用工具、一个庞大的 UI 小部件集合、图表、数据对象存储等等。在开发应用程序时,我们通常寻找对功能和组件的最佳支持。但我们几乎总是面临框架没有我们需要的特定功能或组件的情况。幸运的是,Ext JS 有一个强大的类系统,这使得扩展现有功能或组件,或构建新的功能或组件变得容易。在本书中,我们首先通过示例提供 Ext JS 插件和扩展的非常清晰的概念,然后介绍几个 Ext JS 库和社区提供的插件和扩展,以及几个真实、有用的 Ext

龙哥盟 1045

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: C# List<T>泛型的排序和删除
下一篇: Ext js 4 简单实现分页查询
Dice
博客等级 码龄16年 18粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值