转载自: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. android 上传文件用php程序在服务端接受(一)

    php服务端接受程序..file_up.php. <?php /* require_once('lib/session_config.php'); require_once('lib/flydc ...

  2. [设计模式 3] 用设计模式的眼光看MVC框架

    导读:之前一直在区分MVC和设计模式的区别,但是,既然有些人认为MVC是一种设计模式,那么它们之间肯定是有共通之处的.所以,本篇博客,就用设计模式的眼光来看MVC框架.仅是本人对于MVC的粗鄙看法,还 ...

  3. 5 Ways to Learn and Remember Absolutely Anything

    http://www.inc.com/quora/5-ways-to-learn-and-remember-absolutely-anything.html Start too early on th ...

  4. 深入了解Qt(二)之元对象系统(Meta-Object System)

    深入了解Qt主要内容来源于Inside Qt系列,本文做了部分删改,以便于理解.在此向原作者表示感谢! 在Qt Meta Object System-元对象系统这篇文章中,从底层实现的源码剖析了元对象 ...

  5. CentOS 安裝 VMware Workstation / VMware Player

    参考:http://www.vixual.net/blog/archives/650 序列号:1F04Z-6D111-7Z029-AV0Q4-3AEH8 注意说明:刚开始有很长的一系列协议信息,可以用 ...

  6. 如何使VS2008 调试网站的根目录和IIS调试的一致?

    用VS2008做asp.net网站调试时,经常会多出来一个目录,如http://localhost:1234/Foo/ , 由于一些图片的路径问题,我们不需要最后的/Foo/目录,而是像IIS调试那样 ...

  7. 第六章_PHP数组

    1.PHP支持两种数组:索引数组(indexed array)和关联数组(associative array),前者使用数字作为键,后者使用字符串作为键. 2.遍历索引数组 2.1 for循环语句 2 ...

  8. js随机生成字母数字组合的字符串 随机动画数字

    效果描述: 附件中只有一个index.html文件有效 其中包含css以及html两部分内容 纯js生成的几个随机数字 每次都不重复,点击按钮后再次切换 使用方法: 1.将css样式引入到你的网页中 ...

  9. IOS基础——alloc、init和new方法

    alloc:分配内存. init:初始化. new:代替上面两个函数:分配内存,并且初始化. 注意: 1.在实际开发中很少会用到new,一般创建对象时我们一般是 [[className alloc]i ...

  10. 网页热力图 heatmap js

    HBuilder +js 实现网页热力图 废话不多说,上代码 <!DOCTYPE html> <html> <head> <title>111</ ...