extjs 给下拉框设置数据源问题
设置数据源后,给该下拉框赋值x,结果显示出来的是x(数据源的key,而不是value),如果我在代码中间加一条alert(),则结果显示出来是y(数据源的key所对应的v...
设置数据源后,给该下拉框赋值x,结果显示出来的是x(数据源的key,而不是value),如果我在代码中间加一条alert(),则结果显示出来是y(数据源的key所对应的value),描述不清,请看图,代码如下
if(stlmType==4)//周结
{
feeForm.getForm().findField('openStlnod').enable();
//调用DWR获得数据源 周日0 ,周一~周六:1~6
SelectOptionsDWR.getComboData('OPEN_STLNO',function(ret) {
settleTempStore.loadData(Ext.decode(ret));
});
//alert();
Ext.getCmp('openStlnod').setValue(stlmDate);
} 展开
if(stlmType==4)//周结
{
feeForm.getForm().findField('openStlnod').enable();
//调用DWR获得数据源 周日0 ,周一~周六:1~6
SelectOptionsDWR.getComboData('OPEN_STLNO',function(ret) {
settleTempStore.loadData(Ext.decode(ret));
});
//alert();
Ext.getCmp('openStlnod').setValue(stlmDate);
} 展开
1个回答
展开全部
异步加载导致。
你在没有加alert()前,数据源尚未加载完成,你就进行赋值了。所以只会显示key,而不会是value。
你的alert(),是赋值延后了,数据已经加载完成,所以可以了。
解决思路:你要在数据源加载完成后在进行赋值。——用回调函数callback吧
我的代码(可能麻烦,不过你这个情况我这样解决):
以下代码加在你创建settleTempStore后。
settleTempStore.on('load',function(){Ext.getCmp('openStlnod').setValue(Ext.getCmp('openStlnod').getValue())});
可能标点会不会不匹配,直接打没校验过,你直接调整下。
你在没有加alert()前,数据源尚未加载完成,你就进行赋值了。所以只会显示key,而不会是value。
你的alert(),是赋值延后了,数据已经加载完成,所以可以了。
解决思路:你要在数据源加载完成后在进行赋值。——用回调函数callback吧
我的代码(可能麻烦,不过你这个情况我这样解决):
以下代码加在你创建settleTempStore后。
settleTempStore.on('load',function(){Ext.getCmp('openStlnod').setValue(Ext.getCmp('openStlnod').getValue())});
可能标点会不会不匹配,直接打没校验过,你直接调整下。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询