#extjs
#extjs
Вопрос:
В extjs combobox у нас есть valueField, displayField
. Есть один, getValue().
но его нет getDisaplay().
, Так как же записать имя поля dispay?
Ответ №1:
Как насчет метода getRawValue?
Ext.getCmp('combo').getRawValue();
Комментарии:
1. это ответ
Ответ №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;
}
Комментарии:
1. OP должен принять ответ от @Dasha_Salo, он проще моего и, похоже, работает так же.
2. этот ответ слишком сложный. OP, пожалуйста, проверьте ответ @Dasha
Ответ №3:
простое решение, которое работает для меня :
comboselect: function (combo,record) {
alert(combo.rawValue);
}
надеюсь, это поможет вам
Ответ №4:
В 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;
}
});