转载自:http://blog.csdn.net/zhengyuechuan/article/details/9327291

前台controller代码:

  1. Ext.define('zyc.controller.Filter', {
  2. extend: 'Ext.app.Controller',
  3. init:function(){
  4. this.control({
  5. 'filterpanel':{
  6. render:function(view,opts){
  7. Ext.Ajax.request({
  8. url:'user!getForm.action',
  9. success:function(response,o){
  10. var forms=eval('('+response.responseText+')');
  11. var checkboxgroups=forms[0].checkboxgroup;//获得所有的checkboxgroup
  12. var radiogroups=forms[0].radiogroup;//获得所有的radiogroup
  13. var cbgCount=checkboxgroups.length;
  14. var rdoCount=radiogroups.length;
  15. if(toolBar==null){
  16. view.add({
  17. xtype:'toolbar',
  18. name: 'name'
  19. });
  20. }
  21. for(i=0;i<cbgCount;i++){
  22. var checkboxgroup=checkboxgroups[i];//获得单独一个checkboxgroup对象
  23. var checkboxs=checkboxgroup.checkBox;
  24. var fieldLabelValue=checkboxgroup.fieldLabel;
  25. var cbgName=checkboxgroup.cbgName;
  26. console.debug(fieldLabelValue);
  27. var newCheckBoxs=new Array();
  28. for(var j=0;j<checkboxs.length;j++){
  29. newCheckBoxs.push(
  30. Ext.form.Checkbox({
  31. boxLabel: checkboxs[j].boxLabel,
  32. inputValue: checkboxs[j].inputValue,
  33. checked: checkboxs[j].checked,
  34. name: checkboxs[j].name,
  35. labelWidth:230,
  36. width:80
  37. })
  38. );
  39. }
  40. var toolBar=view.down('toolbar');
  41. toolBar.hide();
  42. view.add({
  43. xtype:'checkboxgroup',
  44. name: cbgName,
  45. columns: 5,
  46. vertical: true,
  47. fieldLabel: fieldLabelValue,
  48. items:newCheckBoxs,
  49. listeners:{
  50. change:function(f ,newValue,oldValue,o){
  51. var self=this;
  52. var checkeds=f.getChecked();
  53. var allCBG=Ext.ComponentQuery.query('checkboxgroup')//获得所有
  54. var allCheckedCount=0;//由于页面有多个checkboxgroup,所有要找出所有被选择的数量
  55. Ext.each(allCBG,function(Cbg){
  56. if(Cbg.getChecked().length>0){
  57. allCheckedCount=Cbg.getChecked().length;
  58. }
  59. })
  60. console.debug(self);
  61. var cgButtonObj=toolBar.down('button[ref='+self.name+']');//获得被单击的cb按钮对象
  62. // console.debug(oldValue);
  63. if(checkeds.length>0){
  64. var checkValues=[];
  65. for(i=0;i<checkeds.length;i++){
  66. checkValues.unshift(checkeds[i].inputValue)
  67. }
  68. // console.debug(checkValues)
  69. if(toolBar.isHidden()){
  70. toolBar.show();
  71. cgButtonObj.show();
  72. }
  73. if(cgButtonObj.isHidden()){
  74. cgButtonObj.show();
  75. }
  76. cgButtonObj.setText('所选'+self.name+':'+checkValues);
  77. cgButtonObj.setTooltip (checkValues);
  78. cgButtonObj.setIconCls ('icon-stat');
  79. }
  80. else {
  81. cgButtonObj.hide();
  82. }
  83. if(allCheckedCount<=0){
  84. toolBar.hide();
  85. }
  86. },
  87. afterrender:function(view, eOpts ){
  88. var tooButton=new Ext.button.Button({
  89. ref:cbgName,
  90. maxWidth :200,
  91. shadow:'drop '
  92. });
  93. //console.debug(tooButton);
  94. toolBar.add(tooButton);
  95. tooButton.on('mouseover',function(){
  96. tooButton.setIconCls('icon-delete');
  97. },this);
  98. tooButton.on('mouseout',function(){
  99. tooButton.setIconCls('icon-edit');
  100. },this);
  101. tooButton.on('click',function(){
  102. var checkeds=view.getChecked();
  103. view.items.each(function(item) {
  104. item.setValue(false);
  105. });
  106. },this)
  107. }
  108. }
  109. });
  110. //newCheckBoxs=null;
  111. }
  112. },
  113. failure:function(response,o){
  114. console.debug('fail');
  115. }
  116. })
  117. }
  118. }
  119. });
  120. },
  121. views:[
  122. 'filter.FilterPanel'
  123. ],
  124. stores :[
  125. ],
  126. models :[
  127. ]
  128. });

后天返回的数据:

  1. [{"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操作、的更多相关文章

  1. ExtJs 3.0 动态生成 CheckBox

    在开发过程中,往往需要利用数据动态生成Checkbox.如权限节点.考试答案,调查选项等等.在Extjs中,有两种方法来获取后台数据,一是Ext.Ajax()方法,第二种是利用 Store,store ...

  2. 关于动态生成data组件

    /*! * WeX5 v3 (http://www.justep.com) * Copyright 2015 Justep, Inc. * Licensed under Apache License, ...

  3. Aop动态生成代理类时支持带参数构造函数

    一.背景 在某些情况下,我们需要植入AOP代码的类并没有默认构造函数.那么此时动态生成的代理类也需要相同签名的构造函数,并且内部调用原始类的构造函数.自己折腾了1晚上没搞定,现在搞定了发出来供大家一起 ...

  4. dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来

    dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散.嵌套在 js 中的修改样式的代码剥离出来.比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化 ...

  5. ABP(现代ASP.NET样板开发框架)系列之20、ABP展现层——动态生成WebApi

    点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之20.ABP展现层——动态生成WebApi ABP是“ASP.NET Boilerplate Project (ASP.N ...

  6. 【.NET深呼吸】Zip文件操作(2):动态生成Zip文档

    通过前面一篇烂文的介绍,大伙儿知道,ZipArchive类表示一个zip文档实例,除了用上一篇文章中所列的方法来读写zip文件外,还可以直接通过ZipArchive类,动态生成zip文件. 文件流操作 ...

  7. jquery动态生成的元素添加事件的方法

    动态生成的元素如果要添加事件,要写成 $(document).on("click", "#txtName", function() { alert(this.v ...

  8. 利用Java动态生成 PDF 文档

    利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...

  9. 用C#从数据库动态生成AdminLTE菜单的一种方法

    当前的应用设计风格趋于Flat扁平化,很多基于BootStrap实现了很多UI非常漂亮的管理界面(Bootstrap admin template). 此核心文件开源在Github:https://g ...

随机推荐

  1. hadoop2.5.1搭建(二)

    第一篇主要是整体的步骤,其实中间遇到很多问题,第二篇将遇到的问题全部列举下来: 1.1包不能加载警告 WARN util.NativeCodeLoader: Unable to load native ...

  2. Vmware ESX5i 环境下部署Windows Storage Server 2008 R2

    ESX5i 环境下部署Windows Storage Server 2008 R2       Windows Storage Server 2008 这款产品微软早已发布,WSS2008是基于Win ...

  3. 互斥对象 Mutex 和MFC中的CMutex

    互斥(Mutex)是一种用途非常广泛的内核对象.能够保证多个线程对同一共享资源的互斥访问.同临界区有些类似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共 ...

  4. NSBundle 的使用

    NSBundle 读取图片 plist text NSBundle *mainbundle=[NSBundle mainBundle]; //使mainBundle 对象获取图片的路径 NSStrin ...

  5. C# 加密算法

     public static class Common     {         #region MD5加密         /// <summary>            /// M ...

  6. linux 编译,链接和加载

    1.   序 最近在折腾各种.so,碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措.索性化了一天多时间将<<程序员的自我修养—链接.装载与库>>中部分内容略读了一遍 ...

  7. Windows USN Journal Parsing

    What is "USN Journal"? It is "Update Sequence Number Journal". It records change ...

  8. Unieap3.5-前台js用SQL语句执行数据请求

    执行UPDATE var sql=" update T_SS_SETTLEMENT_RECORD "+ " set CINVOICE_INFO_FLAG='Y',&quo ...

  9. 判断jquery是否已经加载,如果没有动态加载

    方法一: // Only do anything if jQuery isn't defined if (typeof jQuery == 'undefined') { if (typeof $ == ...

  10. SQL语句统计一段时间内的记录数

    实际应用中经常需要统计单位时间的记录数: 一个小时: SELECT ),createdate,) AS 日期 ,DATEPART(hh,createdate) AS 小时,COUNT(*)AS 记录 ...