ExtJs实现复选框组Checkboxgroup单勾选及复选框组对多个复选框组跨控件全选

ExtJs实现复选框Checkboxgroup单勾选及跨控件全选

由于项目的需要,我们要将EXT的控件Checkboxgroup复选框组改造成但勾选,并且实现一个复选框组控制其他多个复选框组的全选,以下是关于如何实现的代码片段。

1.创建CheckboxGroup对象

1,新建空的EOS6.5的工程,新建com.towngas.tcis. gridlock构件包;

2,在com.towngas.tcis.gridlock构件包的“展现”节点下的“页面资源”节点中创建一个文件夹,命名为gridlock;

3,在新建的文件夹中创建gridlockUi.js文件,gridlockEv.js文件。

4,在gridlockUi.js文件中创建对象:

varfieldAllSelect =  newExt.form.CheckboxGroup({

xtype: ‘checkboxgroup‘,

fieldLabel: ‘全选‘,

itemCls: ‘x-check-group-alt‘,

// Put all controls in a single column with width 100%

columns : 8,

items: [

{boxLabel: ‘全选1‘, name: ‘0‘,checked: false,

}},

{boxLabel: ‘全选2‘, name:‘1‘,checked: false,

}},

{boxLabel: ‘全选3‘, name:‘2‘,checked: false,

}},

{boxLabel: ‘全选4‘, name:‘3‘,checked: false,

}},

{boxLabel: ‘全选5‘, name:‘4‘,checked: false,

}}

]

});

2.扩展CheckboxGroup的单选方法

对创建的CheckboxGroup对象扩展增加方法singlecheck,参数为CheckboxGroup对象以及,复选框的选项items的索引,内容如下:

singlecheck: function (ChkGrp, index) {

if (ChkGrp.items.itemAt(index).checked) {

for (var i = 0; i <ChkGrp.items.length; i++) {

if (i != index) {

if(ChkGrp.items.itemAt(i).checked) {

var id =ChkGrp.items.itemAt(i).id;

ChkGrp.setValue(id,false);

}

}

}

}

}

3.编写CheckboxGroup的items选项的监听事件

在创建的CheckboxGroup对象fieldAllSelect中,增加对fieldAllSelect的items的“check”选中的监听事件,内容如下:

items: [

{boxLabel: ‘全选1‘, name: ‘0‘,checked: false,

listeners : {

‘check‘:function(){

fieldAllSelect.singlecheck(fieldAllSelect,0);

}

}},

{boxLabel: ‘全选2‘, name:‘1‘,checked: false,

listeners : {

‘check‘:function(){

fieldAllSelect.singlecheck(fieldAllSelect,1);

}

}},

{boxLabel: ‘全选3‘, name:‘2‘,checked: false,

listeners : {

‘check‘:function(){

fieldAllSelect.singlecheck(fieldAllSelect,2);

}

}},

{boxLabel: ‘全选4‘, name:‘3‘,checked: false,

listeners : {

‘check‘:function(){

fieldAllSelect.singlecheck(fieldAllSelect,3);

}

}},

{boxLabel: ‘全选5‘, name:‘4‘,checked: false,

listeners : {

‘check‘:function(){

fieldAllSelect.singlecheck(fieldAllSelect,4);

}

}}

]

此时,已经实现了CheckboxGroup复选框变成只能都选一个选项的单勾选框,满足了客户需求。

4.复选框CheckboxGroup单选的实际效果

在之前创建的内容之后,实现了复选框都勾选一个选项,如图所示:

勾选“全选1”出现如下图所示的效果:

勾选“全选2”之后,“全选1”出于不勾选状态,如下图所示的效果:

5.另外一种单勾选实现方法

在之前创建的内容之后,实现了复选框都勾选一个选项,下面的内容是另外一种方法实现单勾选功能,内容如下:

……   this. firstInputValue = null;

fieldCfg = {

xtype :‘dictcheckboxgroup‘,

dictData :SQ_CONPARAM_APPROVELEVEL,

itemCls :‘x-check-group-alt‘,

columns : 8,

id :this.checkGroupId,

allowBlank :false,

blankText :"不能全为空,请勾选一项!",

clearValue :function() { // 清空所有值

this.items.each(function(item){

item.setValue(false);

});

},

nocheckValue: function(index) { // 不选中某值

if(this.items.itemAt(index)){

this.items.itemAt(index).setValue(false);

}

},

checkValue :function(index) { // 选中某值

if(this.items.itemAt(index)){

this.items.itemAt(index).setValue(true);

}

},

uncheckValue: function(box) { // 不选中某值

this.items.each(function(item) {

if(box.inputValue != item.inputValue) {

item.setValue(false);

}

});

},

listeners : {

‘change‘: function(checkgroup, checkedBoxs) {

if(checkedBoxs.length == 1) {

this.firstInputValue = checkedBoxs[0];

}

if(checkedBoxs.length == 2) {

varsbox = null;

for(var n = 0; n < checkedBoxs.length; n++) {

if(this.firstInputValue != checkedBoxs[n]) {

sbox= checkedBoxs[n];

}

}

for(var i = 0; i < checkgroup.items.length; i++) {

if(sbox != checkgroup.items.itemAt(i)) {

checkgroup.items.itemAt(i)

.setValue(false);

}

}

}

}

}

}

……

6.对CheckboxGroup扩展实现跨控件全选功能

完成了以上的步骤,两个不同的CheckboxGroup单勾选功能已经实现,我们对这两个不同的控件,实现了跨控件的全选功能,就是一个CheckboxGroup控制一组CheckboxGroup的全选功能。具体实现内容如下:

listeners : {

‘change‘ :function(checkgroup, checkedBoxs) {

var cbitems = checkgroup.items;

for (var i = 0; i < cbitems.length; i++) {

if (cbitems.itemAt(i).checked) {

var index =cbitems.itemAt(i).name;

//获取下面对应的勾选框

vardictcheckboxgroups =

schemeLoadSelf.findByType(‘dictcheckboxgroup‘);

for(var j=0;j< dictcheckboxgroups.length; j++){

var len =dictcheckboxgroups[j].items.length;

if(index<=len){

//勾选指定索引项

dictcheckboxgroups[j].checkValue(index);

}

}

}else{

var index =cbitems.itemAt(i).name;

//获取下面对应的勾选框

var dictcheckboxgroups =

schemeLoadSelf.findByType(‘dictcheckboxgroup‘);

for(var j=0;j < dictcheckboxgroups.length;j++){

varlen = dictcheckboxgroups[j].items.length;

if(index<=len){

//取消勾选指定索引项

dictcheckboxgroups[j].nocheckValue(index);

}

}

}

}

}

}

7.测试复选框跨控件控制一组复选框全选功能

此时整个界面已开发完成,我们完成了对CheckboxGroup多选框全选一组复选框的功能,如下图所示:

勾选“全选1”勾选框,下面一组复选框勾选各自的第一项,如图所示:

勾选“全选2”勾选框,下面一组复选框勾选各自的第二项,如图所示:

勾选“全选3”勾选框,下面一组复选框勾选各自的第三项,如图所示:

通过以上的几个步骤,可以实现在EXT前台框架下对复选框的方法的扩展满足用户需求和提高用户体验。该种方式从一定程度上来说背离了EXT3.4的原生态的使用原则,从这一点上来说,需要我们在开发EXT界面时,对有些不常见的EXT界面控件特性的扩展,从而实现界面的可操作性以及友好性。

时间: 2024-10-24 20:04:04

ExtJs实现复选框组Checkboxgroup单勾选及复选框组对多个复选框组跨控件全选的相关文章

wxpython 树形控件全选和取消全选

#encoding:utf-8 import wx import wx.lib.agw.customtreectrl as CT class MyFrame(wx.Frame): def __init__(self, parent): self.checked_items = [] wx.Frame.__init__(self, parent, -1, "customtreectrl") self.custom_tree = CT.CustomTreeCtrl(self, agwSty

[控件] 多选一的标签

多选一的标签 效果: 特点: 1. 自动根据文本长度计算按钮宽度 2. 良好的设计 缺点(靠你来修改了): 1. 没有解禁更多的参数设置(懒) 2. 动态计算没有做彻底(懒) 3. 没有做动画设置(懒) 源码: ClassesScrollView.h 与 ClassesScrollView.m // // ClassesScrollView.h // Study // // Created by YouXianMing on 15/4/20. // Copyright (c) 2015年 You

C#WinForm datagridview控件一选选一整行

1 UI 2 设置 3 效果1 4 效果2

C#WinForm datagridview控件一选选一整行的效果实现时,取消第一行默认被选取的副效果

1 UI 2 code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 usi

【JavaScript】复选框的全选、反选,判断哪些复选框被选中

复选框的全选.反选,判断哪些复选框被选中,这个功能不难做, 利用document.getElementsByName("xxx");能够轻易实现,注意其返回值是一个节点数组便是了. 不过这功能对于用户来说是非常贴心的.下面举一个例子还说明这个问题. 首先是以下的布局: HTML代码如下,非常简单,三个按钮,分别设置其onclick事件所对应处理的javascript函数. 之后有四个复选框,注意设置其统一的name值,形成一个节点数组.以便被后续的document.getElement

Qt: 创建具有复选框的树形控件

在Qt中的树形控件称为QTreeWidget,而控件里的树形节点称为QTreeWidgetItem. 关于QTreeWidget控件和QTreeWidgetItem的更多详细知识点,可以查看Qt的官方帮助文档. QTreeWidget类: QTreeWidgetItem类: 实现的功能: 创建树形控件,当选中顶层树形节点时,子节点全部选中. 当选中部分子节点时,顶层树形节点处于灰色未全部选中状态.(部分选中状态) 当子节点全部选中,顶层节点变为选中状态. 具体步骤: 1.  新建Qt GUI应用

jQuery实现的checkbox复选框全选和全不选效果

jQuery实现的checkbox复选框全选和全不选效果:复选框的全选和全不选效果在代码中非常的常用,尤其在批量处理的需求中更是如此,下面就通过一个代码实例简单介绍一下如何实现此效果,希望能够对需要的朋友有所帮助,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http:

【VC编程技巧】控件?4.4ListBox控件(打造带有复选框的ListBox)

4.4ListBox控件(打造带有复选框的ListBox) 下面通过两种方式构建复选框ListBox 1.对话框中插入ListBox控件(IDC_LIST1,IDC_LIST2),如下设置属性 图1 方式一: 2.对ListBox控件(IDC_LIST1)关联控件变量m_checkListBox1,将控件变量类型CListBox -> CCheckListBox(需要手动完成). //修改控件变量类型:CListBox -> CCheckListBox CCheckListBox m_chec

常用的一些表单控件

表单:用于显示 收集信息,并提交信息到服务器)1.表单元素 <form ></form> 主要属性:action: 当提交表单时,向何处发送表单数据,属性值为一个URL method:使用什么方式将表单数据发送到action属性所规定的页面(get post) enctype:表单数据进行编码的方式 name:表单名称2.表单控件: (1).<input>元素用于收集用户信息,为单标记. 主要属性: type:根据不同的type属性值,可以创建各种类型的输入字段 val