Как получить dispayfield в extjs combo?

в extjs combobox у нас есть valueField, displayField. Есть один getValue()., но нет getDisaplay(). Итак, как захватить имя поля dispay?

4 ответов


использовать значение, чтобы получить запись из магазина, и получить значение оттуда.

абстрактно, вы можете использовать этот код, но вы можете заменить некоторые переменные известными значениями, чтобы сделать его более читаемым:

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;
}

Как насчет метода getRawValue?

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

простое решение, что worket для меня :

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

надеюсь, что помочь вам


в 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;
    }
});