我有一个组合B被其他组合A加载(由'select'监听器触发)
一旦B填充,我看到所有项目,但现在从组合B中的下拉列表中,
我强行用鼠标选择第一个项目
我只能通过输入
来选择其他项目
请帮忙!!!!
组合A的代码
{
xtype: 'combo',
displayField: 'value',
emptyText: 'Please select A first',
fieldLabel: 'Combo A',
id: 'comboA',
maxHeight: 240,
mode: 'local',
triggerAction: 'all',
typeAhead: true,
typeAheadDelay: 100,
valueField: 'id',
store: new Ext.data.JsonStore({
url: '/cgi-bin/server.cgi',
fields: ['id', 'name'],
baseParams: {
action: 'getAList'
},
autoLoad: true,
root: 'aList'
}),
listeners: {
'select': {
fn: function(){
var comboB = Ext.getCmp('comboB');
comboB.clearValue();
comboB.store.removeAll();
comboB.store.reload({
params: {
id: this.getValue()
}
})
}
}
}
}
组合B的代码:
{
xtype: 'combo',
displayField: 'item',
editable: true,
emptyText: 'Select a Combo A first',
fieldLabel: 'Combo B',
id: 'comboB',
lazyInit: true,
maxHeight: 240,
mode: 'local',
triggerAction: 'all',
typeAhead: true,
valueField: 'id',
width: 220,
store: new Ext.data.JsonStore({
url: '/cgi-bin/server.cgi',
root: 'bList',
autoLoad: false,
fields: ['id,', 'item'],
baseParams: {
action: 'getBList'
},
listeners: {
'beforeload': function(){
Ext.getCmp('comboB').disable();
},
'load': function(){
Ext.getCmp('comboB').enable();
}
}
})
}
答案 0 :(得分:0)
不确定完全错误在哪里,但我怀疑你的comboA中的这一部分没有按预期被解雇 -
comboB.store.reload({
params: {
id: this.getValue()
}
})
所以comboB仍然被禁用。当你点击comboB触发器时,它会加载商店并且comboB商店的加载监听器正在按预期启动以启用组合。
尝试使用一些调试语句或单步执行上面的代码。