公司的一同事被extjs的combox设置默认值折腾的很崩溃:给combox设置值之后一直显示的id也就是combox中配置的valueField,而不是displayField,而且展开下拉框之后该条记录也不是选中状态。extjs俺也不太熟,想帮也帮不上忙,闲来无事就网上搜了下,大多数都是在store上绑定load事件,然后在事件里面做些让combox选中的事情,但是我怎么试都不行,可能是ext不向下兼容的原因,也可以是自己extjs太菜。实在不行,就拿着extjs的API一通乱试,最后终于完美解决:
- 先给store绑定load事件
- 如果combox没有值,则让第一条记录选中
- 如果有值,则通过store的findRecord函数进行查找,然后让它选中
var userCombo = new Ext.form.ComboBox({
xtype : "combo",
id : "investItemAddForm#userCombo",
fieldLabel : '借款人',
name : 'userId',
triggerAction : "all",
store : new Ext.data.JsonStore( {
fields : [ 'userId', 'loginName' ],
proxy: {
type: 'ajax',
url: 'p2p/admin/getUser.action',
reader: {
type: 'json',
root: 'root'
}
},
autoLoad: true,
listeners : {
load : function(store, records, success, eOpts) {
var selected = userCombo.getValue();
if (selected) {
var store = userCombo.getStore();
var obj = store.findRecord(userCombo.valueField, selected);
userCombo.select(obj);
} else {
userCombo.select(records[0]);
}
}
}
}),
displayField : 'loginName',
valueField : 'userId',
mode : 'remote',
editable : false,
emptyText : '请选择'
});