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 });