Как получить dispayfield в Extjs Combo? - PullRequest
6 голосов
/ 15 апреля 2011

В выпадающем списке extjs у нас есть valueField, displayField.Есть один getValue(). Но нет getDisaplay(). Так как же захватить название поля дисплея?

Ответы [ 4 ]

11 голосов
/ 19 апреля 2011

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

Ext.getCmp('combo').getRawValue();
1 голос
/ 06 мая 2015

простое решение, которое работает для меня:

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

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

1 голос
/ 15 апреля 2011

Используйте значение, чтобы вывести запись из хранилища и получить оттуда отображаемое значение.

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

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;
}
0 голосов
/ 28 января 2013

В 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;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...