急........求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到容器内,并重新布局)