zoukankan      html  css  js  c++  java
  • EXTJS 4.2 资料 控件之checkboxgroup的用法(动态数据)

    在开发中遇到两种情况:第一在新增窗体时,要动态加载CheckBox项;第二在修改时不但需要加载所有CheckBox项,还要并且选中之前新增时的选项

    如图这是在修改页面的效果:

    1.在新增窗体中动态加载checkboxgroup

    1.1在新增窗体代码片段:

       {
                        xtype: 'panel',
                         750,
                        border: false,
                        flex: 2,
                        items: [{
                            xtype: 'checkboxgroup',
                            id: 'lblOperationBehavior',
                            name: 'lblOperationBehavior',
                            itemCls: 'x-check-group-alt',
                            columns: 4,
                            fieldLabel: '设定权限',
                            labelWidth: 100,
                             750,
                            align: 'left',
                            border: true,
                            anchor: '100%', flex: 1,
                            listeners: {
                                render: function (view, opt) {
                                    LoadingOperationBehavior();
                                }
                            }
                        }]
                    },

    1.2方法LoadingOperationBehavior()

    //加载操作全部名称
    function LoadingOperationBehavior() {
        //通过extjs的ajax获取操作全部名称
        Ext.Ajax.request({
            url: '/ProjectWeb/HttpHandlerData/MemberManagement/MemberManagement.ashx?operation=SearchOperationBehavior',
            success: function (response) {
                var obj = eval("(" + response.responseText + ")");
                var len = obj.data.length;//obj.data.length; "Table"这里的Table指的是后台返回 类似于data
                if (obj.data == null || len == 0) {
                    return;
                }
    
                var checkboxgroup = Ext.getCmp("lblOperationBehavior");
                for (var i = 0; i < len; i++) {
                    var checkbox = new Ext.form.Checkbox(
                      {
                          boxLabel: obj.data[i].OperationName,//obj.Table[i].Title; "Title"指的是返回的名字
                          name: obj.data[i].OperationCode,
                          inputValue: obj.data[i].OpeartionBehaviorId,
                          checked: false
                      });
                    checkboxgroup.items.add(checkbox);
                }
                OperationDefineForm.doLayout(); //重新调整版面布局  
            }
        });
    }

    2.在修改页面窗体,加载所有CheckBox项,并选中相关项

    2.1在修改页面窗体代码片段

      {
                        xtype: 'panel',
                         750,
                        border: false,
                        flex: 3,
                        items: [{
                            xtype: 'checkboxgroup',
                            id: 'lblOperationBehavior_Update',
                            name: 'lblOperationBehavior_Update',
                            columns: 4,
                            fieldLabel: '设定权限',
                            labelWidth: 100,
                             750,
                            align: 'left',
                            border: true,
                            anchor: '100%', flex: 1,
                            listeners: {
                                render: function (view, opt) {
                                    LoadingOperationBehavior_Update();
                                }
                            }
                        }]
                    },

    2.2 LoadingOperationBehavior_Update();

    //加载操作全部名称
    //说明:LoadingOperationBehavior_Update中有两个Ajax请求;第一个是获取全部的CheckBox;第二个获取的是选中的CheckBox
    function LoadingOperationBehavior_Update() {
    
        Ext.Ajax.request({//第一个Ajax
            url: '/ProjectWeb/HttpHandlerData/MemberManagement/MemberManagement.ashx?operation=SearchOperationBehavior',
            params: {
                start: start,
                limit: limit,
                page: '1'
            },
            success: function (response) {
                var cbgObj = eval("(" + response.responseText + ")");
                var cbgLen = cbgObj.data.length;//obj.data.length; "Table"这里的Table指的是后台返回 类似于data
                if (cbgObj.data == null || cbgLen == 0) {
                    return;
                }
                var checkboxgroup = OperationDefineForm_Update.getForm().findField('lblOperationBehavior_Update');
                var checkbox;
                var strInIds = "";//定义临时变量,判断是否已经存在并选中
                Ext.Ajax.request({//第二个Ajax
                    url: '/ProjectWeb/HttpHandlerData/MemberManagement/MemberManagement.ashx?operation=SearchOperationBehaviorTOP',
                    success: function (response) {
                        var obj = eval("(" + response.responseText + ")");
                        var len = obj.data.length;//obj.data.length; "Table"这里的Table指的是后台返回 类似于data
                        if (obj.data == null || len == 0) {
                            return;
                        }
                        for (var i = 0; i < cbgLen; i++) {
                            for (var j = 0; j < len; j++) {
                                if (cbgObj.data[i].OpeartionBehaviorId == obj.data[j].OpeartionBehaviorId) {//如果两个ID对比相等的话就是代表这个选项已呗选中
                                    strInIds += cbgObj.data[i].OpeartionBehaviorId;
                                    checkbox = new Ext.form.Checkbox(
                                     {
                                         boxLabel: obj.data[j].OperationName,//obj.Table[i].Title; "Title"指的是返回的名字
                                         name: obj.data[j].OperationCode,
                                         inputValue: obj.data[j].OpeartionBehaviorId,
                                         checked: true
                                     });
                                }
                                else {//不相等,不选
                                    if (strInIds.indexOf(cbgObj.data[i].OpeartionBehaviorId) < 0) {
                                        checkbox = new Ext.form.Checkbox(
                                        {
                                            boxLabel: cbgObj.data[i].OperationName,//obj.Table[i].Title; "Title"指的是返回的名字
                                            name: cbgObj.data[i].OperationCode,
                                            inputValue: cbgObj.data[i].OpeartionBehaviorId,
                                            checked: false
                                        });
                                    }
                                }
                            }
                            checkboxgroup.items.add(checkbox);
                        }
                        OperationDefineForm_Update.doLayout(); //重新调整版面布局  
                    }
                });
            }
        });
    
    }

     

  • 相关阅读:
    while循环学习之统计流量
    MySQL的启动脚本
    UVA 725 Division
    UVA 712 S-tree
    UVA 514
    字典树
    UVA 1595 multimap 的应用
    C++ map 和 multimap
    浮点数
    UVA 227
  • 原文地址:https://www.cnblogs.com/foreverfendou/p/4277740.html
Copyright © 2011-2022 走看看