我正在尝试使用从jsp页面提取的JSON对象派生的Ext.form.CheckboxGroup
来动态填充Ext.form.Checkbox
。我的JSON对象如下所示:
{
"sensors": [
{ "id": 200, "name": "name - B - A" },
{ "id": 201, "name": "name - B - B" },
{ "id": 202, "name": "name - C - A" },
{ "id": 203, "name": "name - C - B" }
]
}
我可以使用以下代码将这些对象加载到Ext.data.JsonStore
中:
new Ext.data.JsonStore({
id: 'sensorStore',
autoLoad: true,
method: 'GET',
baseParams: {
jobType: 'sensor'
},
url: 'getstatus.jsp',
root: 'sensors',
sortInfo: { field: 'id', direction: 'ASC' },
fields: [ 'id', 'name' ]
}),
我的理解是,这将使我能够访问一组Ext.data.Record
个对象,但我无法弄清楚如何迭代这些记录来创建任何Ext.form.Checkbox
个,或者如果还有其他一些方法可以达到相同的效果。
我不是要设置复选框的值,但是在提交表单时我需要能够引用它们。
答案 0 :(得分:5)
假设存储已加载(因为你有autoLoad:true),你需要
要迭代并创建复选框配置的片段 -
var checkboxconfigs = []; //array of about to be checkboxes.
mystore.getRange().each(function(record){
checkboxconfigs.push({ //pushing into array
id:record.data.id,
boxLabel:record.data.name,
//any other checkbox properties, layout related or whatever
});
});
要创建复选框组的代码段 -
var myCheckboxgroup = new Ext.form.CheckboxGroup({
id:'myGroup',
fieldLabel: 'Checkboxes in two columns',
columns:2,
items:checkboxconfigs //created in previous snippet.
//any other checkbox group configuration
});
添加到您的容器并重新绘制 -
mycontainer.add(myCheckboxgroup).doLayout();
编辑 - 您的JsonStore配置与返回的数据不匹配。 (id需要是一个int)
new Ext.data.JsonStore({
id: 'sensorStore',
autoLoad: true,
method: 'GET',
baseParams: {
jobType: 'sensor'
},
url: 'getstatus.jsp',
root: 'sensors',
sortInfo: { field: 'id', direction: 'ASC' },
fields: [ {name:'id', type:int}, 'name' ]
}),