存储加载后,在extjs 4.0.7中Combobox中的小错误

时间:2012-04-29 23:17:21

标签: extjs combobox drop-down-menu setvalue

我对组合框有点问题。 我有一个combobox商店,在一些事件后使用ajax重新加载。之后,我使用myCombo.setValue()来设置默认的组合框选择字段。它运作良好。问题是当我点击组合并显示下拉列表时。该列表会自动隐藏。但只是在第一次,然后每件事情都很好,直到我重新加载我的表格。 我可以展示一部分代码:

存储


var ParentsStore =   Ext.create('Ext.data.Store', { 
    autoLoad: false,
    fields: ['id', 'name'],
    proxy: {
        type: 'ajax',
        url: 'index.php?aid=parents_combostore',
        reader: {
            type: 'xml',
            record: 'item',
            idProperty: 'ASIN',
            totalRecords: '@total'
        }
    }
});

它正在重新加载商店:


Ext.getCmp('userParent_combo_id').clearValue();

       ParentsStore.getProxy().extraParams = 
       {
                 typ :typ['usrtyp_id']
       };
            Ext.getCmp('userParent_combo_id').store.load();
            Ext.getCmp('userParent_combo_id').lastQuery = null; 

有人了解我,可以尝试帮助我吗?

最好的问候!

2 个答案:

答案 0 :(得分:0)

load()方法是异步的。这意味着您无法在调用load()后立即加载商店。您需要为商店加载事件配置处理程序并继续您的逻辑 - setValue()等。

答案 1 :(得分:0)

我不认为库中存在错误,只能在我的代码中使用!

这是我调用加载商店时的一部分


 xtype: 'radiogroup',
                    columns: 1,
                    fieldLabel: 'typ',
                    id: 'typ_radio_id',

                    items: [
                        usrtyp_item
                    ],
                    listeners: {
                            change: {
                                fn: function(field,new_value,old_value,options)
                                {
                                        typ=Ext.getCmp('typ_radio_id').getValue();

                                        if(second_change)
                                        {
                                            Ext.getCmp('userParent_combo_id').clearValue();


                                            ParentsStore.getProxy().extraParams = {
                                                typ :typ['usrtyp_id']
                                            };
                                            Ext.getCmp('userParent_combo_id').store.load();
                                            Ext.getCmp('userParent_combo_id').lastQuery = null; 

                                            second_change=0;
                                        }
                                        else second_change=1;

                                }
                            }
                    }

这是树面板上的监听器,我使用setValue


listeners: {
            'itemclick': function(this_el,record,item,index,e,eOpts)
            {
                    var user_info = getUserById( record.get('id') );    


                        parent_id=user_info['parent_id'];
                        second_change=0;

                        Ext.getCmp('userParent_combo_id').setValue( parent_id );
            }
}

在'itemclick'之后,radiogroup中的'change'事件会自动触发。这是我的代码的一部分,但这是重要的部分。