如何在ExtJS组合框中获取displayfield?

8

在 ExtJS 的下拉框中,我们有 valueFielddisplayField 两个属性。虽然有一个 getValue() 方法可以获取选中值,但是却没有 getDisaplay() 方法来获取显示值。那么如何获取显示值的名称呢?

4个回答

15

getRawValue方法怎么样?

Ext.getCmp('combo').getRawValue();

这是答案 - alexandre1985

2

使用这个值从存储中获取记录,并从那里获取显示值。

抽象地说,您可以使用此代码,但是您可能会替换一些变量以使其更易读:

getComboDisplay = function(combo) {
    var value = combo.getValue();
    var valueField = combo.valueField;
    var record;
    combo.getStore().each(function(r){
        if(r.data[valueField] == value){
            record = r;
            return false;
        }
    });

    return record ? record.get(combo.displayField) : null;
}

2
OP应该接受@Dasha_Salo的答案,它比我的简单,并且似乎具有相同的功能。 - Sean Adkinson
这个答案太复杂了。楼主,请查看@Dasha的回答。 - alexandre1985

1
一个对我有效的简单解决方案:

comboselect: function (combo,record) {
    alert(combo.rawValue);
}

希望这能帮到你。

0
在ExtJS 4中有一个内置的findRecord()方法来执行BigSean上面建议的搜索,因此您不必编写所有这些代码:

Ext.override(Ext.form.field.ComboBox, {
    getDisplayedValue: function() {     // getDisplayValue() already exists but is a private method
        var me = this,
            value = me.value,
            record = null;
        if(value) {
            record = me.getStore().findRecord(me.valueField, value);
        }
        if(record) {
            return record.get(me.displayField);
        }
        return null;
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接