急........求Extjs CheckboxGroup动态添加checkBox 跪谢

急........求Extjs  CheckboxGroup动态添加checkBox 跪谢

问题描述:

    var MyCheckboxGroup=Ext.extend(Ext.form.CheckboxGroup,{
        /**
        *@description 多少列显示数据
        */
        columns:3,
        fieldLabel: '元素类型',   
        id:'ElementTypeID',
        name :'ElementTypeID',
        anchor:"95%",
        items:[{
                          xtype: 'checkbox',
                          fieldLabel: 'Auto Layout'
                        }//如果我这里没加这个组件的话,下面的roomType.items[0]与roomType.panel就会报undefined的错误
                   ]
    });
    var roomType = new MyCheckboxGroup();
    function getReceiveType(){
        var dataUrl = '/d9inn/receive.do?method=initReceiveType';
        Ext.Ajax.request({
                           url:dataUrl,
                           success:function(response){
                              var result = Ext.decode(response.responseText);
                             var data = result.msg;
                             for(var i=0;i<data.length;i++){
                               var d=data[i];         
                               alert(d.name+"------"+d.value);//我这里已经获取到了从后台传回的值了
                               var chk = new Ext.form.Checkbox({boxLabel: d.name,fieldLabel:"这是对的", inputValue: d.value});
                               roomType.items[0]=chk; //可是我这样添加时,页面上却没有显示出checkBox
                               alert(roomType.items.length);
                             }
                             roomType.panel.doLayout();
                           }
                        });
    }
         getReceiveType();
              该用什么方法把实例化好的checkBox组件添加到checkBoxGroup中去,先谢谢了 啊

CheckboxGroup及RadioGroup是我个人觉得Ext中比较“恶心”的组件……
它继承自Ext.form.Field,但又想表现为容器。

它构造时,会将配置中的items及columns等拿来处理,生成一个对应的panel,这个处理只有一次。所以,基本上动态修改很难很难,并且容易出问题。

给你的建议:
1. 不使用CheckboxGroup,动态的东西用ListView或Grid比较合适,DataView也不错,简单易用。
2. 实在想要CheckboxGroup的样式,可以试着动态创建CheckboxGroup,而不是动态添加子组件。相对来说要处理的东西就少很多了。(可以将组件改为容器,调用接口后请求数据,请求完毕先清空容器,再构造一个CheckboxGroup到容器内,并重新布局)