3

我正在使用 ExtJS 3.4 。我有一个包含组合框数据的结构,如下所示:

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

我像这样加载它:

ComboBox.store.loadData(a);

但是当我在数组中只有 1 项时

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

然后它根本不加载。我读过:

an Array : Arrays 将在内部转换为 Ext.data.ArrayStore,自动生成字段名称以与所有数据组件一起使用。一维数组:(例如,['Foo','Bar'])一维数组将自动扩展(每个数组项将用于组合 valueField 和 displayField)二维数组:(例如, [['f','Foo'],['b','Bar']]) 对于多维数组,每一项的索引 0 中的值将被假定为组合 valueField,而在索引 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"]]}

那么包含一项的数组将成功加载。我应该在 ComboBox.store 的哪些属性上正确配置它们,以便使用 loadData 方法正确加载单项数组?

4

2 回答 2

1

ComboBox.store.loadData(var a);不适用于任何数据。它会引发异常Unexpected token var。相反,应该使用ComboBox.store.loadData(a);没有var

于 2011-07-16T19:13:42.227 回答
0
ComboBox.valueField = "id";
ComboBox.displayField = "text";
ComboBox.store = new Ext.data.ArrayStore({autoDestroy: true, fields: ["id", "text"]});
于 2011-07-17T13:22:20.093 回答