combobox初始值的问题

最近碰到一个问题,有一个combobox,下拉的选项是从服务器读取的,我想在修改操作的时候,能够根据值自动匹配

使用了setValue()方法,
现在的问题是,页面第一次进入的时候,文本框中显示的是 valueField的值,不是displayField中对应的文本.

但是以后的显示都是正常的(只要不重新刷新页面)

 

原因在一开头没有focus就return了

查了一下ComboBox的源码,其中onLoad事件是这样写的:
onLoad : function(){
        if(!this.hasFocus){
            return;
        }

 

需要扩展下就可以解决这个问题.

代码如下:
Ext.namespace('ux'); 
Ext.ux.DefaultingComboBox = function(config) { 
    Ext.ux.DefaultingComboBox.superclass.constructor.call(this, config); 
}; 
 
Ext.extend(Ext.ux.DefaultingComboBox, Ext.form.ComboBox, { 
    setValue : function(v) { 
        // 如果远程数据还没有加载,在设值之前先加载一次  
        if (this.mode == 'remote' && this.store.getCount() == 0) { 
            this.store.on("load", function() { 
                Ext.ux.DefaultingComboBox.superclass.setValue.call(this, v); 
            }, this, { 
                single : true 
            }); 
            this.doQuery(this.allQuery, true); 
        } else { 
            Ext.ux.DefaultingComboBox.superclass.setValue.call(this, v); 
        } 
    } 
});

使用方法:

将代码复制到你的js中,combo不需要修改,只需要写成如下就可以解决问题.

new Ext.ux.DefaultingComboBox({
            xtype : 'combo',
            fieldLabel : '车牌号码',
            allowBlank : false,
            triggerAction : 'all',
            forceSelection : true,
            store : clbmStore,
            id : 'clmc',
            //mode : 'local',//不能使用mode=local
            lazyRender :true,
            readOnly : true,
            loadingText : '正在加载中...',
            valueField : "dm",
            hiddenName : 'pbp.clbm',
            displayField : "mc",
            emptyText : '请选择...',
            name : 'pbp.clbm',
            anchor : '95%'
        }),

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值