在extjs组合框中,我们有valueField, displayField
。有一个getValue().
但是没有getDisaplay().
那么如何捕获差异字段的名称?
答案 0 :(得分:11)
getRawValue方法怎么样?
Ext.getCmp('combo').getRawValue();
答案 1 :(得分:1)
使用该值将记录从商店中取出,并从那里获取显示值。
抽象地说,您可以使用此代码,但您可以将某些变量替换为已知值,以使其更具可读性:
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;
}
答案 2 :(得分:1)
一个适合我的简单解决方案:
comboselect: function (combo,record) {
alert(combo.rawValue);
}
希望能帮到你
答案 3 :(得分:0)
在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;
}
});