ext4.1动态生成多个checkboxgroup(或者radiogroup),并且有toolbar操作、
转载自:http://blog.csdn.net/zhengyuechuan/article/details/9327291
前台controller代码:
- Ext.define('zyc.controller.Filter', {
- extend: 'Ext.app.Controller',
- init:function(){
- this.control({
- 'filterpanel':{
- render:function(view,opts){
- Ext.Ajax.request({
- url:'user!getForm.action',
- success:function(response,o){
- var forms=eval('('+response.responseText+')');
- var checkboxgroups=forms[0].checkboxgroup;//获得所有的checkboxgroup
- var radiogroups=forms[0].radiogroup;//获得所有的radiogroup
- var cbgCount=checkboxgroups.length;
- var rdoCount=radiogroups.length;
- if(toolBar==null){
- view.add({
- xtype:'toolbar',
- name: 'name'
- });
- }
- for(i=0;i<cbgCount;i++){
- var checkboxgroup=checkboxgroups[i];//获得单独一个checkboxgroup对象
- var checkboxs=checkboxgroup.checkBox;
- var fieldLabelValue=checkboxgroup.fieldLabel;
- var cbgName=checkboxgroup.cbgName;
- console.debug(fieldLabelValue);
- var newCheckBoxs=new Array();
- for(var j=0;j<checkboxs.length;j++){
- newCheckBoxs.push(
- Ext.form.Checkbox({
- boxLabel: checkboxs[j].boxLabel,
- inputValue: checkboxs[j].inputValue,
- checked: checkboxs[j].checked,
- name: checkboxs[j].name,
- labelWidth:230,
- width:80
- })
- );
- }
- var toolBar=view.down('toolbar');
- toolBar.hide();
- view.add({
- xtype:'checkboxgroup',
- name: cbgName,
- columns: 5,
- vertical: true,
- fieldLabel: fieldLabelValue,
- items:newCheckBoxs,
- listeners:{
- change:function(f ,newValue,oldValue,o){
- var self=this;
- var checkeds=f.getChecked();
- var allCBG=Ext.ComponentQuery.query('checkboxgroup')//获得所有
- var allCheckedCount=0;//由于页面有多个checkboxgroup,所有要找出所有被选择的数量
- Ext.each(allCBG,function(Cbg){
- if(Cbg.getChecked().length>0){
- allCheckedCount=Cbg.getChecked().length;
- }
- })
- console.debug(self);
- var cgButtonObj=toolBar.down('button[ref='+self.name+']');//获得被单击的cb按钮对象
- // console.debug(oldValue);
- if(checkeds.length>0){
- var checkValues=[];
- for(i=0;i<checkeds.length;i++){
- checkValues.unshift(checkeds[i].inputValue)
- }
- // console.debug(checkValues)
- if(toolBar.isHidden()){
- toolBar.show();
- cgButtonObj.show();
- }
- if(cgButtonObj.isHidden()){
- cgButtonObj.show();
- }
- cgButtonObj.setText('所选'+self.name+':'+checkValues);
- cgButtonObj.setTooltip (checkValues);
- cgButtonObj.setIconCls ('icon-stat');
- }
- else {
- cgButtonObj.hide();
- }
- if(allCheckedCount<=0){
- toolBar.hide();
- }
- },
- afterrender:function(view, eOpts ){
- var tooButton=new Ext.button.Button({
- ref:cbgName,
- maxWidth :200,
- shadow:'drop '
- });
- //console.debug(tooButton);
- toolBar.add(tooButton);
- tooButton.on('mouseover',function(){
- tooButton.setIconCls('icon-delete');
- },this);
- tooButton.on('mouseout',function(){
- tooButton.setIconCls('icon-edit');
- },this);
- tooButton.on('click',function(){
- var checkeds=view.getChecked();
- view.items.each(function(item) {
- item.setValue(false);
- });
- },this)
- }
- }
- });
- //newCheckBoxs=null;
- }
- },
- failure:function(response,o){
- console.debug('fail');
- }
- })
- }
- }
- });
- },
- views:[
- 'filter.FilterPanel'
- ],
- stores :[
- ],
- models :[
- ]
- });
后天返回的数据:
- [{"checkboxgroup":[{"cbgName":"dept","checkBox":[{"boxLabel":"销售部","checked":false,"id":1,"inputValue":"销售部","name":"dept"},{"boxLabel":"技术部","checked":false,"id":2,"inputValue":"技术部","name":"dept"},{"boxLabel":"普通部","checked":false,"id":3,"inputValue":"普通部","name":"dept"},{"boxLabel":"资源部","checked":false,"id":4,"inputValue":"资源部","name":"dept"},{"boxLabel":"后勤部","checked":false,"id":5,"inputValue":"后勤部","name":"dept"},{"boxLabel":"行政部","checked":false,"id":6,"inputValue":"行政部","name":"dept"},{"boxLabel":"管理部","checked":false,"id":7,"inputValue":"管理部","name":"dept"},{"boxLabel":"体育部","checked":false,"id":8,"inputValue":"体育部","name":"dept"},{"boxLabel":"劳动部","checked":false,"id":9,"inputValue":"劳动部","name":"dept"},{"boxLabel":"策划部","checked":false,"id":10,"inputValue":"策划部","name":"dept"}],"fieldLabel":"部门选择"},{"cbgName":"user","checkBox":[{"boxLabel":"郑一","checked":false,"id":1,"inputValue":"郑一","name":"user"},{"boxLabel":"陈二","checked":false,"id":2,"inputValue":"陈二","name":"user"},{"boxLabel":"张三","checked":false,"id":3,"inputValue":"张三","name":"user"},{"boxLabel":"李四","checked":false,"id":4,"inputValue":"李四","name":"user"},{"boxLabel":"王五","checked":false,"id":5,"inputValue":"王五","name":"user"},{"boxLabel":"赵六","checked":false,"id":6,"inputValue":"赵六","name":"user"},{"boxLabel":"林七","checked":false,"id":7,"inputValue":"林七","name":"user"},{"boxLabel":"孙八","checked":false,"id":8,"inputValue":"孙八","name":"user"},{"boxLabel":"吴九","checked":false,"id":9,"inputValue":"吴九","name":"user"},{"boxLabel":"蔡十","checked":false,"id":10,"inputValue":"蔡十","name":"user"}],"fieldLabel":"用户选择"}],"radiogroup":[]}]
效果图
ext4.1动态生成多个checkboxgroup(或者radiogroup),并且有toolbar操作、的更多相关文章
- ExtJs 3.0 动态生成 CheckBox
在开发过程中,往往需要利用数据动态生成Checkbox.如权限节点.考试答案,调查选项等等.在Extjs中,有两种方法来获取后台数据,一是Ext.Ajax()方法,第二种是利用 Store,store ...
- 关于动态生成data组件
/*! * WeX5 v3 (http://www.justep.com) * Copyright 2015 Justep, Inc. * Licensed under Apache License, ...
- Aop动态生成代理类时支持带参数构造函数
一.背景 在某些情况下,我们需要植入AOP代码的类并没有默认构造函数.那么此时动态生成的代理类也需要相同签名的构造函数,并且内部调用原始类的构造函数.自己折腾了1晚上没搞定,现在搞定了发出来供大家一起 ...
- dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来
dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散.嵌套在 js 中的修改样式的代码剥离出来.比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化 ...
- ABP(现代ASP.NET样板开发框架)系列之20、ABP展现层——动态生成WebApi
点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之20.ABP展现层——动态生成WebApi ABP是“ASP.NET Boilerplate Project (ASP.N ...
- 【.NET深呼吸】Zip文件操作(2):动态生成Zip文档
通过前面一篇烂文的介绍,大伙儿知道,ZipArchive类表示一个zip文档实例,除了用上一篇文章中所列的方法来读写zip文件外,还可以直接通过ZipArchive类,动态生成zip文件. 文件流操作 ...
- jquery动态生成的元素添加事件的方法
动态生成的元素如果要添加事件,要写成 $(document).on("click", "#txtName", function() { alert(this.v ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- 用C#从数据库动态生成AdminLTE菜单的一种方法
当前的应用设计风格趋于Flat扁平化,很多基于BootStrap实现了很多UI非常漂亮的管理界面(Bootstrap admin template). 此核心文件开源在Github:https://g ...
随机推荐
- 洛谷P1930 亚瑟王的宫殿 Camelot
P1930 亚瑟王的宫殿 Camelot 19通过 53提交 题目提供者JOHNKRAM 标签USACO 难度提高+/省选- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 很久以前,亚瑟王和 ...
- Android基础总结(1)
1.Android开发的特点 四大组件:活动(Activity).服务(Service).广播接收器(Broadcast Receiver).内容提供器(Content Provider).其中活动是 ...
- TCP/IP详解学习笔记(13)-- TCP连接的建立与终止
1.TCP连接的建立 设主机B运行一个服务器进程,它先发出一个被动打开命令,告诉它的TCP要准备接收客户进程的连续请求,然后服务进程就处于听的状态.不断检测是否有客户进程发起连续 ...
- asp.net中如何绑定combox下拉框数据(调用存储过程)
#region 绑定类型(商品类型.仓库名称) public void DataType_Bind(int _peoid) { DataTable dt_goodsname = new DataTab ...
- shell学习笔记(1):利用IFS打印用户和默认shell
参考资料为:linux shell脚本攻略 作者sarath Lakshman 人民邮电出版社 shell:读取文件的每一行内容并输出 的写法1 目的:读取passwd文件,获得用户名和其默认的she ...
- Git:代码冲突常见解决方法
摘自: http://blog.csdn.net/iefreer/article/details/7679631 如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候, ...
- hdu1505
the main algorithm as the 1506 #include <stdio.h> #include <iostream> #include <strin ...
- SVN更新、清理乱码解决
我的电脑信息 win7 64bit svn版本: 先介绍一种最简单的方法,一般都会有效,疑难杂症请用第二种 方法一: 将前面6项全部选上--> [确定] 无效请仔细看下面方法二方法详解 方法二: ...
- 设备版本,设备号,APP版本,APP名称获取
//获取设备id号 UIDevice *device = [UIDevice currentDevice];//创建设备对象 NSString *deviceUID = [[NSString allo ...
- jQuery bind and unbind (绑定和解除)
测试:页面代码: <body> <input type="button" name="aaa" value="点击我"&g ...