如何在 ExtJS Combobox 中获取所选 displayField 的值
Posted
技术标签:
【中文标题】如何在 ExtJS Combobox 中获取所选 displayField 的值【英文标题】:How to get the value of selected displayField in ExtJS Combobox 【发布时间】:2013-01-14 09:49:23 【问题描述】:如何在 ExtJS 3.4 ComboBox 中获取选中的 displayField 的值? getValue() 返回 valueField,但我需要其他的。
【问题讨论】:
好的,无论valueField
是你的情况,你能澄清一下你需要什么吗?
ComboBox 有显示在页面上的 displayField 和提交给脚本的 valueField。我需要获取所选项目的 displayField 的值。
为此,没有简单的方法可以存档。您可以为自己订阅 select 事件,但这只会在用户单击而不是您使用 setValue()
设置值时触发。所以你需要扩展组合类来添加这样的行为。不知道这是否适合您,但没有其他方法
还有另一种方法。打电话给getRawValue()
getRawValue() 返回 valueField 值 :(
【参考方案1】:
combo.getValue() -> valueField combo.getRawValue() -> 显示字段
【讨论】:
【参考方案2】:如果是这样的话,
displayField : 'countryName',
valueField : 'countryId',
然后下面的函数给出了所需的 displayFiled(即使商店里有超过 1 个字段,你也可以得到它们)
function getFieldValues(combo, nameIn, nameOut)
try
var r = combo.getStore().find(nameIn,combo.getValue());
return combo.getStore().getAt(r).get(nameOut);
catch(err)
return'error';
获取显示字段或存储中的任何其他字段的方法:
var item = getFieldValues(Ext.getCmp('combo'), 'countryId', 'countryName');
【讨论】:
【参考方案3】:也许你只是用户 store.filter(),对吧?如果是这样,请尝试清除过滤器并再次加载,如下所示:
onProvinceSelected: function (com,record,index)
var provinceCode = com.getValue();
var postGrid = this.lookupReference('postgrid');
if (provinceCode != 0)
postGrid.store.filter('ProvinceCode', provinceCode);
else
postGrid.store.filters.clear();
postGrid.getStore().load();
【讨论】:
【参考方案4】:我正在使用 ComboBox 的 lastSelectionText 属性;对我来说很好,但它是一个未记录的功能,因此可能随时中断......
Ext.override(Ext.form.ComboBox,
getDisplayValue: function ()
return this.lastSelectionText;
);
【讨论】:
以上是关于如何在 ExtJS Combobox 中获取所选 displayField 的值的主要内容,如果未能解决你的问题,请参考以下文章
在 ExtJs 3.3.1 中,如何在没有单击 EditorGrid 的情况下显示 ComboBox 下拉菜单?
ExtJS:如何让用户在 Combobox 中输入不在商店中的值