Ext在设置默认值时,直接用 setValue() 的方式,会导致显示的与实际需要往后台传递的值不符。下面直接贴解决问题的代码:
var sexArray = [
[1, "手工录入"],
[2, "系统筛选"]
];
var sexRecord = Ext.data.Record.create([
{name: "sex", type: "int", mapping: 0},
{name: "sexName", type: "string", mapping: 1}
]);
var sexStore = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(sexArray),
reader: new Ext.data.ArrayReader({},sexRecord),
autoLoad: true, //即时加载数据
listeners: {
load: function() {
sexComBox.setValue(sexComBox.getValue());//这里是重点
}
}
});
var sexComBox = new Ext.form.ComboBox({
triggerAction: "all",
store: sexStore,
displayField: "sexName",
valueField: "sex",
width: 120,
mode: "local",
emptyText: "请选择性别",
listeners: {
afterRender: function(combo) {
combo.setValue(1);//同时下拉框会将与name为firstValue值对应的 text显示
}
}
});
此时,下拉框显示的内容及往后台传递的真实的值相同