我对组合框有点问题。 我有一个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;
有人了解我,可以尝试帮助我吗?
最好的问候!答案 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'事件会自动触发。这是我的代码的一部分,但这是重要的部分。