我是ExtJS的新手......几个星期之后,请原谅我,如果这似乎是一个微不足道的问题。
我必须根据在另一个组合框(DeliveryMethod)中选择的值加载组合框(SourceSystem)中的值列表。我正在为两个组合使用JSON商店。
所以我在combobox 2上添加了一个监听器
listeners:{
'select': function(combo, record,index) {
selectedDelMethod = record.data.codeValue;
var srcSystem = Ext.getCmp('sourceSystemCombo');
srcSystem.reset();
srcSystem.store.reload({
params: {
attrID: 3002,
delvMethod: selectedDelMethod
}
});
}
这里,srcSystem.store根据selectedDelMethod加载不同的列表。 这工作正常。但是当加载SourceSystem combox id时,它会被填充,但没有任何内容显示为默认值。
fieldLabel: 'Source System',
id: 'sourceSystemCombo',
xtype: 'combo',
mode: 'local',
triggerAction: 'all',
forceSelection: true,
editable: false,
name: 'sourceSystem',
displayField: 'shortDescription',
valueField: 'codeValue',
hiddenName: 'sourceSystem',
store: sourceSystemStore,
listeners: {
'afterrender': function(combo){
var selectedRecord = combo.getStore().getAt(0);
combo.setValue(selectedRecord);
}
}
我确信我在追随者的听众中遗漏了一些东西。请告诉我如何将第一个值设为默认值?
答案 0 :(得分:1)
我发现combo.getStore()。getAt(0)返回null。尝试了几种方法后,我设法解决了这个问题。我没有在组合框上放置事件,而是更新了商店的重新加载以在组合中设置第一个值。这是
var srcSystem = Ext.getCmp('sourceSystemCombo');
srcSystem.reset();
srcSystem.store.reload({
params: {
attrID: 3002,
delvMethod: selectedDelMethod
},
scope : this,
callback : function(records, operation, success){
srcSystem.setValue(srcSystem.store.getAt(0).get('codeValue'));
}
});
组合框上的设置值必须是商店的回调函数,因为商店的加载是一个异步过程。见this!
答案 1 :(得分:0)
尝试使用
this.fireEvent('select',combo,selectedRecord)而不是
combo.setValue(selectedRecord);