Extjs 远程combobox首次提供AJAX调用,即使它是级联的

Extjs 远程combobox首次提供AJAX调用,即使它是级联的,extjs,Extjs,团队 我有个奇怪的问题 我有两个组合框,我想使用另一个的值级联其中一个组合框 所以在一个组合框的select事件中,我得到另一个组合框并加载该存储 但我观察到的情况如下 用户第一次选择第一个组合框值,所以为第二个组合框加载存储 当用户第一次选择第二个组合框时,就会调用AJAX,不知道为什么 再次,如果用户选择组合框1,则为组合框2加载存储 当用户再次选择第二个组合框时,不会进行AJAX调用(为什么第一次进行AJAX调用) 在第2步中,我无法理解为什么会对第二个combo调用AJAX,因为它已经在

团队

我有个奇怪的问题

我有两个组合框,我想使用另一个的值级联其中一个组合框

所以在一个组合框的select事件中,我得到另一个组合框并加载该存储

但我观察到的情况如下

  • 用户第一次选择第一个组合框值,所以为第二个组合框加载存储
  • 当用户第一次选择第二个组合框时,就会调用AJAX,不知道为什么
  • 再次,如果用户选择组合框1,则为组合框2加载存储
  • 当用户再次选择第二个组合框时,不会进行AJAX调用(为什么第一次进行AJAX调用)
  • 在第2步中,我无法理解为什么会对第二个combo调用AJAX,因为它已经在第1步中加载了

    代码详细信息

        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值。