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のどのプロパティを適切に構成する必要がありますか?