我正在尝试使用JSON数据自动选择表单的单选按钮和组合框值。但是,其他一切(文本框/复选框/数据字段)正在填充。我没有成功自动选择广播组或组合框的值。
正如Satya所建议的,这里是jsfiddle的链接。单击“电影数据库”中的一行将填充“电影信息表单”中的数据。
非常感谢您的帮助。
这是我表格的一部分 -
{
xtype:'radiogroup',
columns:1,
fieldLabel:'Filmed In',
name: 'filmed_in',
items:[{
name:'filmed_in',
boxLabel: 'Color',
inputValue: 'color'
},{
name:'filmed_in',
boxLabel: 'B&W',
inputValue: 'B&W'
}
]
},{
xtype: 'checkbox',
fieldLabel: 'Bad Movie',
name: 'bad_movie',
checked: true
},{
xtype: 'combo',
hiddenName: 'genre',
fieldLabel: 'Genre',
mode: 'local',
store: genres,
displayField:'url',
valueField:'name',
width: 250,
editable: false,
listeners: {select: comboSelect}
},
这就是流派商店的编码方式 -
var genres = new Ext.data.JsonStore({
// store configs
storeId: 'genres',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'genres.data',
reader: {
type: 'json',
idProperty: 'name'
}
},
fields: ['name', 'url']
});
网址 genres.data 会返回此内容 -
[{"name":"1","url":"Comedy"},{"name":"2","url":"Drama"},{"name":"3","url":"Action"}]
这是我尝试加载到表单中的数据 -
{
"id":"1",
"title":"Office Space",
"director":"Mike Judge",
"released":"02/27/1999",
"genre":"1",
"bad_movie": "1",
"filmed_in": "color",
"description": "Loved watching this ....."
}
答案 0 :(得分:0)
对于单选按钮,预期值与您的传递不同。
而不是filmed_in: 'color'
,您需要传递filmed_in: { filmed_in: 'color' }
。
您可以将setValue
覆盖为sra,因为它可以与filmed_in: 'color'
一起使用:
setValue: function (value) {
if (!Ext.isObject(value)) {
var obj = new Object();
obj[this.name] = value;
value = obj;
}
Ext.form.RadioGroup.prototype.setValue.call(this, value);
}
对于组合框,只需添加name: 'genre'
。