在 ExtJS 的下拉框中,我们有 valueField
和 displayField
两个属性。虽然有一个 getValue()
方法可以获取选中值,但是却没有 getDisaplay()
方法来获取显示值。那么如何获取显示值的名称呢?
在 ExtJS 的下拉框中,我们有 valueField
和 displayField
两个属性。虽然有一个 getValue()
方法可以获取选中值,但是却没有 getDisaplay()
方法来获取显示值。那么如何获取显示值的名称呢?
getRawValue方法怎么样?
Ext.getCmp('combo').getRawValue();
使用这个值从存储中获取记录,并从那里获取显示值。
抽象地说,您可以使用此代码,但是您可能会替换一些变量以使其更易读:
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;
}
comboselect: function (combo,record) {
alert(combo.rawValue);
}
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;
}
});