如何在extjs组合中获得dispayfield?

时间:2011-04-15 17:33:53

标签: extjs

在extjs组合框中,我们有valueField, displayField。有一个getValue().但是没有getDisaplay().那么如何捕获差异字段的名称?

4 个答案:

答案 0 :(得分:11)

getRawValue方法怎么样?

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

答案 1 :(得分:1)

使用该值将记录从商店中取出,并从那里获取显示值。

抽象地说,您可以使用此代码,但您可以将某些变量替换为已知值,以使其更具可读性:

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 :(得分:1)

一个适合我的简单解决方案:

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

希望能帮到你

答案 3 :(得分: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;
    }
});