从JSON数据加载单选按钮/组合框数据

时间:2013-04-23 15:05:34

标签: extjs extjs4

我正在尝试使用JSON数据自动选择表单的单选按钮和组合框值。但是,其他一切(文本框/复选框/数据字段)正在填充。我没有成功自动选择广播组或组合框的值。

正如Satya所建议的,这里是jsfiddle的链接。单击“电影数据库”中的一行将填充“电影信息表单”中的数据。

  

http://jsfiddle.net/9PVCN/5/

非常感谢您的帮助。

这是我表格的一部分 -

              { 
                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 ....."

}

1 个答案:

答案 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'

http://jsfiddle.net/9PVCN/9/