转载自: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. Java基础——数据类型之间的转换

    Java数据类型分为三大类,即布尔型.字符型和数值型.其中数值型又分为整型和浮点型.Java的基本数据类型(8种)为布尔型boolean(1字节):字符型char(2字节):整型byte(1字节).s ...

  2. c#中如何不通过后台直接用js筛选gridview中的数据条件筛选查询?

    js: //条件筛选 var showstate = true; function imagechange() { if (showstate) { $('#_toggle').hide(500, f ...

  3. Android控件大全(一)——DialogFragment创建对话框

    DialogFragment在android 3.0时被引入.是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框.典型的用于:展示警告框,输入框,确认框等等. 在Dia ...

  4. SVN 忽略获取和提交obj、bin文件夹

    一.全局设置的方式(貌似不行) SVN忽略文件夹刚开始用的是这种方式: Settings => Subversion里的Global ignore pattern增加这两项*/bin */obj ...

  5. 苹果系列机型专业刷机,解锁,解ID

    如有软件开发需求,请留言或在猪八戒网主页留言http://home.zhubajie.com/8506525/,常年接收c.c++(vs2010.RAD studio xe5\RAD studio 2 ...

  6. C# Webservice 解决在运行配置文件中指定的扩展时出现异常。 ---> System.Web.HttpException: 超过了最大请求长度问

    摘自: http://blog.csdn.net/gulijiang2008/article/details/4482993 请在服务器端配置 方法一: 在通过WebService处理大数据量数据时出 ...

  7. Track files and folders manipulation in Windows

    The scenario is about Business Secret and our client do worry about data leakage. They want to know ...

  8. Android IOS WebRTC 音视频开发总结(十五)-- 培训课程大纲

    最近在给公司做内部培训,主要是关于即时通讯和移动视频通话,包括android与android,ios与ios,android与ios,以及手机与PC. ------------------------ ...

  9. 深入了解Javascript模块化编程

    本文译自Ben Cherry的<JavaScript Module Pattern: In-Depth>.虽然个人不太认同js中私有变量存在的必要性,但是本文非常全面地介绍了Javascr ...

  10. 导出excel表功能

    前台: <asp:Button ID="btndao" runat="server"  Text="导出excel文件" onclic ...