Как получить 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;
}
простое решение, что 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;
}
});