【发布时间】:2013-01-13 12:07:09
【问题描述】:
我在表单上有一个组合框,我需要在其中重置其存储以及“displayField”和“valueField”配置。
通过cmb.bindStore(newStore) 重置商店效果很好。
设置cmb.displayField = 'newfieldname'; 也很有效。
但是,cmb.valueField = 'newValField'; 不起作用。组合显示正确的东西,但是当我选择一个项目时,该值使用旧 valueField 值,而不是新值。
我试过了:
- 之后做一个
cmb.reset() -
Ext.apply(...)
是不是因为valueField 是一个必填字段而在某种程度上很特别?是否有一些特殊的方法可以在我不知道的 Ext-JS 组件上设置配置值,或者无法更改“valueField”的值?
仅供参考 - 这是我的代码:
comp.bindStore(Ext.create('Ext.data.Store', {
fields : [ {
name : 'abbr',
type : 'string'
}, {
name : 'name',
type : 'string'
}, {
name : 'slogan',
type : 'string'
} ],
data : [ {
"abbr" : "AL",
"name" : "Alabama",
"slogan" : "The Heart of Dixie"
}, {
"abbr" : "AK",
"name" : "Alaska",
"slogan" : "The Land of the Midnight Sun"
}, {
"abbr" : "AZ",
"name" : "Arizona",
"slogan" : "The Grand Canyon State"
}, {
"abbr" : "AR",
"name" : "Arkansas",
"slogan" : "The Natural State"
}, ]
}));
comp.displayField = 'abbr'; // THIS WORKS
comp.valueField = 'abbr'; // THIS DOESNT WORK
【问题讨论】:
-
你在使用
getValue吗?我使用 Ext 示例运行了您的代码,其 valueField 为“name”,getValue有效。 -
你是先用
valueField和displayField作为'name'运行它吗?如果我这样做,然后将 valueField 和 displayField 更改为“abbr”,下拉列表会显示缩写,但是当您选择一个时,状态名称最终会显示在组合框中。我会尽量找时间做一个jsfiddle。 -
我是从具有
tpl和displayTpl的示例中做到的,并且成功了。
标签: javascript user-interface extjs combobox config