ComboBox.store.loadData无法加载单项数组

时间:2011-07-16 15:37:22

标签: javascript arrays extjs loaddata

我正在使用ExtJS 3.4。 我有一个结构,包含这样的组合框数据:

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

我像这样加载它:

ComboBox.store.loadData(a);

但是当我在数组中只有一个项目时

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

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

  

数组:数组将转换为Ext.data.ArrayStore   在内部,自动生成字段名称以处理所有数据   组件。 1维数组:(例如,['Foo','Bar'])A   一维数组将自动展开(每个数组项   将用于组合valueField和displayField)   二维数组:(例如,[['f','Foo'],['b','Bar']])   多维数组,每个项目的索引0中的值将是   假设是组合valueField,而索引1的值是   假设是组合displayField。

但这并不能解释如何使用一个元素加载数组。或者无论如何,它不应该是一个数组,重点是只加载一个项目。我试过加载这个: 代码:

[{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方法正确加载单项数组?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

ComboBox.valueField = "id";
ComboBox.displayField = "text";
ComboBox.store = new Ext.data.ArrayStore({autoDestroy: true, fields: ["id", "text"]});