huzai 2012-02-23
项目中需要用到给combobox赋初始值的问题,该初始值并不确定,想控制为store的第一行数据。
试了一些方法,比如监听combobox中的render事件,但是由于是异步加载,在render的时候,数据并未获得。最后改为监听store的load事件搞定。
代码如下:
/**
* @note 获取枚举值
* @params enumType 数据库中枚举值类型 comId 控件comboboxID isNeed 第一行数据是否需要默认展示(1-展示)
* @time 2012-02-23
* **/
disn.utils.getEnums=function(enumType,comId,isNeed){
var myEnums = new Ext.data.JsonStore({
url:BIZCTX_PATH+"/favtype!listEnumDict.action?enumType="+enumType,
root: 'listEnumDict',
autoLoad:true, //
fields: [
{name:'value',mapping:'enumValue'},
{name:'text',mapping:'enumName'}
],
listeners: {
load : function(combo) {//监听load事件,为combobox赋初始值,store第一行
if(isNeed && isNeed == "1"){
//store.each(function(record){});//如果不确定需要默认展示的值,可以先进行store的遍历。 Ext.getCmp(comId).setValue(this.data.items[0].data.value);
}
}
}
});
return myEnums;
};
var layoutPanel1 = ColumnPanelHelper.createLayoutPanel(2);
layoutPanel1.push({
xtype: "combo",
labelStyle: "width:130px;",
width: 150,
hasAll:true,
codeType:"city",
fieldLabel: "填报城市",
store:disn.utils.getEnums('CITY_ID','favIndex.cityId','1'),
mode:"local",
displayField:"text",
valueField:"value",
triggerAction: "all",
id:"favIndex.cityId",
name:"favIndex.cityId",
readOnly:true
});