1

我正在尝试使用 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']
    });

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

}

4

1 回答 1

0

对于单选按钮,预期值与您的传递不同。

而不是filmed_in: 'color'你需要通过filmed_in: { filmed_in: 'color' }.

您可以覆盖提到的setValueas 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/

于 2013-04-23T16:40:01.913 回答