15

私はこのようなコンボボックスを定義します

{{
  xtype:'コンボボックス'、
  emptyText:'関数'
  ストア:['なし']
}

次に、あるイベントでストアが新しいデータをロードする必要があるため、コンボボックスからストアを取得してこれを試します。

oFunctionStore.loadData(['dothis'、'dothat'、'dosomething']);

しかし、この後、コンボボックスには、目に見えるコンテンツがなく、小さな空白行だけのドロップダウンがあります。

4

2 に答える 2

17
// Change this...
oFunctionStore.loadData( ['dothis', 'dothat', 'dosomething' ] );

// to this...
oFunctionStore.loadData( [ [ 'dothis' ], [ 'dothat' ], [ 'dosomething' ] ] );
  • コンボボックスは、Ext.data.ArrayStore配列をモデルに変換するを暗黙的に作成します。

  • dataに渡されるパラメーターは 、loadDataモデルの配列、またはモデルに変換できるオブジェクトの配列(この場合は配列の配列)のいずれかであることが期待されます。

  • 最初のストアのロード時に、元の配列が[ [ 'none' ] ]舞台裏に変換されました。

こちらの例をご覧ください

于 2012-07-19T23:40:58.930 に答える
1

carStore-メインコンボのストア。

carModelStore-ストア。carStoreベースのコンボボックスでの選択に依存する必要があります

var carModelStore = new Ext.data.Store({
    reader: new Ext.data.JsonReader({
        fields: ['id', 'car-model'],
        root: 'rows'
    }),
    storeId: 'car-model-store',
    proxy: new Ext.data.HttpProxy({
        url: 'carmodeldataprovider.json?car-name=lamborghini'
    }),
    autoLoad: true
});


{ xtype: 'combo', name: 'car-name', fieldLabel: 'Car', mode: 'local', store: carStore, triggerAction: 'all',
    listeners: {
        select: function(combo, records, eOpts){
            var carName = records.get('car-name');  // the element selected in combo
            var carModelStore = Ext.StoreMgr.lookup("car-model-store");

            carModelStore.proxy.setUrl('carmodeldataprovider.json?car-name=' + carName, false);
            carModelStore.reload();
        }
    }

}
于 2015-01-05T21:03:23.207 に答える