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']
    });

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

}

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 に答える