ExtJS PropertyGrid中使用Combobox选择值问题
程序员文章站
2022-06-17 18:46:14
问题描述: 在propertygrid中使用combobox来选择值时,得到的应该是displayfield的值,但是在确认选择的时候却显示了valuefield的值,...
问题描述:
在propertygrid中使用combobox来选择值时,得到的应该是displayfield的值,但是在确认选择的时候却显示了valuefield的值,例如,下拉选择性别,displayfield分别为'男','女',对应的valuefield分别为'0','1',本来选择应该显示中文描述,但是却显示成了0或者1这样的标识数据,这对用户来说应该不能接受的。
解决:
拦截grid的beforepropertychange事件,设置好显示的值,之后返回false,阻止修改事件中的验证重置。
例如:
listeners: {
beforepropertychange: function(source, recordid, value, oldvalue){
if(recordid == 'brand_name'){
var record = this.getstore().getbyid(recordid);
this.suspendevents();
record.set("value", cmbbrandedit.store.getat(cmbbrandedit.store.find('brand_id', value)).get('brand_name'));
record.commit();
this.resumeevents();
return false;
}
}
}
在propertygrid中使用combobox来选择值时,得到的应该是displayfield的值,但是在确认选择的时候却显示了valuefield的值,例如,下拉选择性别,displayfield分别为'男','女',对应的valuefield分别为'0','1',本来选择应该显示中文描述,但是却显示成了0或者1这样的标识数据,这对用户来说应该不能接受的。
解决:
拦截grid的beforepropertychange事件,设置好显示的值,之后返回false,阻止修改事件中的验证重置。
例如:
复制代码 代码如下:
listeners: {
beforepropertychange: function(source, recordid, value, oldvalue){
if(recordid == 'brand_name'){
var record = this.getstore().getbyid(recordid);
this.suspendevents();
record.set("value", cmbbrandedit.store.getat(cmbbrandedit.store.find('brand_id', value)).get('brand_name'));
record.commit();
this.resumeevents();
return false;
}
}
}
下一篇: this 的值到底是什么?