0

ユーザーが値を選択するコンボボックスがあり、その値はチェックボックスデータストアに渡され、データベース (oracle) から動的に入力されます。以下のコードを試しました。選択したパラメーターがチェックボックスに渡されているようで、コンソールにデータが入力されているのがわかります。フォームにチェックボックスをレンダリングできません。私が得るエラーは次のとおりです: typeError: this.items[0] is undefined.

    testArray = new Array();
    var testStore = new Ext.data.JsonStore({
        proxy:new Ext.data.HttpProxy({
        method:'GET',
        prettyUrls:false,
        url:'kiu.htm',
        listeners:{
            'loadexception':{
            fn:test.form.data.loadException
            }
        }
        }),
        fields:["id", "display"],
        reader:new Ext.data.JsonReader({
        id:'id',
        root:'results',
        totalProperty:'totalCount',
        fields:new Ext.data.Record.create([
            {name:'id',type:'int'},
            {name:'display',type:'string'}
        ])
        }),
        listeners:{      
        load: function(t, records, options, success) {
            for(var i=0; i<records.length; i++) {
              testArray.push({name:records[i].data.id, boxLabel: records[i].data.display});
              alert(testArray[i].id);
            }
        }
        }
    });


    {
                         xtype:'combo',
                         id:'comboid3',                         
                         store:combostore,
                         displayField:'display',
                         valueField:'id',
                         tabIndex:1,
                         loadingText:'Loading combo...',
                         listeners :{
                                   select:function(event){
                                         testStore.baseParams = {
                                                "comboid":Ext.getCmp('comboid3').getValue()
                                            };                                        

                                         testStore.load();

                                    }
                         }

                   },
                   {


                                xtype:'checkboxgroup',
                                                         fieldLabel:'Check',                             
                               items:testArray
           }

助けていただければ幸いです!

4

1 に答える 1

0

ExtJSのバージョンを指定すると常に役立ちます。これは、現在のバージョンではなく、2.xまたは3.xである必要があるようです。

問題はタイミングです。ロード呼び出しは非同期であるため、この方法でtestArrayを利用しようとすると、チェックボックスグループのitemsプロパティを解析するまでに空の配列を参照している可能性があります。これにはいくつかのオプションがあります...1つはチェックボックスグループへの参照を取得してアイテムを追加すること、もう1つは呼び出しが戻るまでチェックボックスグループをフォームにまったく入れないことです。移入されたアイテムの配列。いずれの場合も、ロードハンドラー関数内からFormPanelまたはCheckboxGroupのいずれかへのコンポーネント参照を検索し、「add」メソッドを呼び出して子アイテムを追加する必要がある可能性があります。

于 2013-02-26T06:13:37.977 に答える