0

我对组合框有一点问题。我有一个组合框商店,它在某些事件后使用 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; 

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

此致!

4

2 回答 2

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 中的“更改”事件会自动触发。这是我的代码的一部分,但也是重要的部分。

于 2012-04-30T09:41:30.417 回答
0

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

于 2012-04-29T23:45:19.053 回答