如何在 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组合框中按Enter键获取所选结果的值

Extjs3 combobox使用

在 ExtJs 3.3.1 中,如何在没有单击 EditorGrid 的情况下显示 ComboBox 下拉菜单?

ExtJS:如何让用户在 Combobox 中输入不在商店中的值

如何在 WinForms 的 ComboBox 中居中对齐所选项目?

如何在 QML 的自定义 ComboBox 中突出显示所选项目?