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

Posted

技术标签:

【中文标题】ComboBox.store.loadData 无法加载单项数组【英文标题】:ComboBox.store.loadData can't load single-item array 【发布时间】:2011-10-06 19:10:12 【问题描述】:

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

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

我是这样加载的:

ComboBox.store.loadData(a);

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

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

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

一个数组:数组将被转换为 Ext.data.ArrayStore 在内部,自动生成字段名称以处理所有数据 成分。一维数组:(例如,['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 方法正确加载单项数组?

【问题讨论】:

你使用的是哪个版本的 ExtJs? 你为什么想要一个只有一条记录的商店? @Jaitsu 如何在不使用商店的情况下将一个项目加载到组合框? 这正是我的意思,你为什么会有一个只有一个选项的组合框? 【参考方案1】:

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

【讨论】:

当然不会,这是我的拼写错误,但不是正确答案 在 extjs 3.3.1 中,您的示例运行良好。我通过调用代码 var store = new Ext.data.ArrayStore( autoDestroy: true, storeId: 'Store1', idProperty:"id", fields: ["id","text"]); var cc = new Ext.form.ComboBox("fieldLabel":"my","value":31029,"forceSelection":true,"hiddenName":"ComboHiddenName","minChars":1,"triggerAction":"全部","商店":[[31029,"gdfs"]]); cc.render(Ext.getBody()); c.store.loadData([[1,'dgkj']]);因此,您的 extjs 版本可能存在问题。【参考方案2】:
ComboBox.valueField = "id";
ComboBox.displayField = "text";
ComboBox.store = new Ext.data.ArrayStore(autoDestroy: true, fields: ["id", "text"]);

【讨论】:

以上是关于ComboBox.store.loadData 无法加载单项数组的主要内容,如果未能解决你的问题,请参考以下文章

ValueError 层序贯_13的输入0与层不兼容:预期ndim = 3,发现ndim = 4收到完整形状:(无,无,无,无)

如何修复'ValueError:输入0与层simple_rnn_1不兼容:预期形状=(无,无,20),找到形状=(无,无,2,20)'

树莓派3B 无显示器,无键盘,无Linux系统,无网线 配置WIFI连接

HTTP协议的 “无连接,无状态”

Visual Studio 2012 中的普通 C# 编辑器(无智能感知、无缩进、无代码突出显示)

sim卡无服务是怎么回事 手机卡突然变成无服务是怎么回事?