解决Ext.form.ComboBox 初始值加载不正确

new Ext.form.ComboBox({
    hiddenName: 'order_state',
    name: 'state',
    width: 80,
    emptyText: '状态',
    mode: 'local',
    displayField: 'name',
    valueField:'id',
    triggerAction: 'all',
    editable: false,
    store: Ext.create({
    autoLoad: true,
    xtype:'directstore',
    root: 'rows',
    fields: ['name', 'id'],
    idProperty:
'id', directFn:Ads.OrderState,
    listeners:{
      load:{
        fn:function(){this.reset();}, //重置ComboBox的值
        scope:this  //调用域链指向ComboBox
      }

    } }) })

发生值显示不正确的主要原因是,这里的Store加载数据是放在所有东东都初始化之后,当然也在你加载表单值之后,所以在加载表单的时候根本没有对应的displayText可用,只能显示原始值了。

解决方法有很多种,很多人选择在ComboBox.Store.Load事件里加载表单值,但个人感觉这种做法不太妥,当有很多个ComboBox的时候还是有先后顺序的问题。

此处建议在form所属的FormPanel的render事件中加载表单值,然后在对应ComboBox.Store.Load使用上述黄色高亮代码。

posted on 2013-01-23 21:36  SeanZX  阅读(273)  评论(0)    收藏  举报