3

ExtJS3.4を使用しています。私はこのようなコンボボックスのデータを持つ構造を持っています:

var a = [[1,"text1"],[2,"text2"]]

私はそれをこのようにロードします:

ComboBox.store.loadData(a);

しかし、配列にアイテムが1つしかない場合

var a = [[1,"text1"]]

その後、まったくロードされません。私はそれを読みました:

配列:配列は内部でExt.data.ArrayStoreに変換され、すべてのデータコンポーネントで機能するフィールド名が自動的に生成されます。1次元配列:(eg、['Foo'、'Bar'])1次元配列は自動的に展開されます(各配列項目はコンボvalueFieldとdisplayFieldの両方に使用されます)2次元配列:(eg、 [['f'、'Foo']、['b'、'Bar']])多次元配列の場合、各項目のインデックス0の値は、コンボvalueFieldと見なされますが、インデックス1はコンボdisplayFieldと見なされます。

しかし、それは私が1つの要素で配列をロードする方法を説明していません。または、配列である必要はありません。重要なのは、1つのアイテムのみをロードすることです。私はこれをロードしようとしました:コード:

[{id:1,text:"text1"}]
[[{id:1,text:"text1"}]]
{id:1,text:"text1"}

カスタムArrayStoreを作成することもできます。

Code:
 var store = new Ext.data.ArrayStore({
                            autoDestroy: true,
                            storeId: 'Store1',
                            idProperty:"id",
                            fields: ["id","text"]);
ComboBox.store = store;
ComobBox.store.loadData([{id:1,text:"text1"}]);

しかし、すべてが正しくロードされません。コンボボックスが空であるか、テキストの代わりにIDが表示されます。

コンボを怠惰に初期化すると、次のことがわかります。コード:

{"xtype":"combo","width":250,"fieldLabel":"my combo","value":31029,"forceSelection":true,"hiddenName":"ComboHiddenName","minChars":1,"triggerAction":"all","store":[[31029,"gdfs"]]}

次に、1つのアイテムを含む配列が正常にロードされます。loadDataメソッドを使用して単一アイテム配列が正しくロードされるように、ComboBox.storeのどのプロパティを適切に構成する必要がありますか?

4

2 に答える 2