Extjs 远程combobox首次提供AJAX调用,即使它是级联的
团队 我有个奇怪的问题 我有两个组合框,我想使用另一个的值级联其中一个组合框 所以在一个组合框的select事件中,我得到另一个组合框并加载该存储 但我观察到的情况如下Extjs 远程combobox首次提供AJAX调用,即使它是级联的,extjs,Extjs,团队 我有个奇怪的问题 我有两个组合框,我想使用另一个的值级联其中一个组合框 所以在一个组合框的select事件中,我得到另一个组合框并加载该存储 但我观察到的情况如下 用户第一次选择第一个组合框值,所以为第二个组合框加载存储 当用户第一次选择第二个组合框时,就会调用AJAX,不知道为什么 再次,如果用户选择组合框1,则为组合框2加载存储 当用户再次选择第二个组合框时,不会进行AJAX调用(为什么第一次进行AJAX调用) 在第2步中,我无法理解为什么会对第二个combo调用AJAX,因为它已经在
xtype: 'combo',id='firstcombo', name: 'DEFAULT_VALUE' ,minChars:2, value: decodeHtmlContent('') ,width:200 ,listWidth:500, resizable: true,
valueField : 'id', displayField: 'id', pageSize: 15,forceSelection:true, enableKeyEvents: true,
store: new Ext.data.Store({reader: new Ext.data.CFQueryReader({id: 'NAME',
fields:[{name:'id', mapping:'id'}]}),
fields: [{name:'id', mapping:'id'}],
url:'server/ajax/Params'
}
}),
listeners : {
select:function(combo, record, index) {
this.setRawValue(decodeHtmlContent(record.get('id')));
cascadeFields();
}
xtype: 'combo',id='secondcombo', name: 'DEFAULT_VALUE' ,minChars:2, value: decodeHtmlContent('') ,width:200 ,listWidth:500, resizable: true,
valueField : 'id', displayField: 'id', pageSize: 15,forceSelection:true, enableKeyEvents: true,
store: new Ext.data.Store({reader: new Ext.data.CFQueryReader({id: 'NAME',
fields:[{name:'id', mapping:'id'}]}),
fields: [{name:'id', mapping:'id'}],
url:'server/ajax/Params',
baseParam:{valuefirst:''}
},
listeners: {
beforeload: function(store, options) {
var value = Ext.getCmp('fistcombo').value;
Ext.apply(options.params, {
valuefirst:value
});
},
}),
listeners : {
select:function(combo, record, index) {
this.setRawValue(decodeHtmlContent(record.get('id')));
}
function cascadeFields()
{
var combo = Ext.getCmp('secondcombo');
if(combo.store)
{
var store = combo.store;
combo.setDisabled(true);
combo.clearValue('');
combo.store.removeAll();
combo.store.load();
combo.setDisabled(false);
}
}
您应该在存储上指定“不自动加载”: 自动加载:错误 在组合框中,您应该将querymode设置为local: queryMode:“本地”
编辑:您可能希望在第一个组合存储中自动加载。这就是我想要的1)如果组合框没有任何值,则应始终通过ajax加载组合框,因此如果级联完成,则在扩展时第二个组合框不应发送ajax请求2)如果我使用您的选项,则在加载页面时加载组合框,这是我不想要的。否,这些选项具有相反的效果:)。自动加载:false->您必须自己加载存储。queryMode:'local'->当您第一次打开组合选项时,存储将不会加载。请尝试选择,但正如我所说;您可能希望第一个存储区的“自动加载”设置为true。请注意,您使用等号(“=”)来设置组合ID值。