我正在使用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方法正确加载单项数组?
答案 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"]});