代码之家  ›  专栏  ›  技术社区  ›  JulianR

IE中的extjs组合框问题

  •  1
  • JulianR  · 技术社区  · 16 年前

    我有一个extjs组合框,后面有一个远程数据存储。在所有浏览器中,它都可以正常工作,但在IE(我测试过的所有版本)中,组合框会扩展一秒钟,显示一个“加载”图标,然后再次消失。在这之后再次单击它不会使它再扩展。基本上:它没有被填充。

    在服务器端,一切都很好。到达控制器操作(使用ASP.NET MVC),该操作返回JSON数据。JSON的格式正确(至少所有其他浏览器都会接受它)。

    奇怪的是,当我在控制器操作中放置一个断点时,jsonStore在客户端被正确填充。这对我来说意味着某种时间问题。

    另一个奇怪的事情是,每隔一段时间,它都能正常工作。也许是因为时机刚好是偶然的或是什么。

    如果我将组合框模式设置为“本地”并强制 .load() 在远程数据存储上,它在IE中也可以正常工作。

    这个问题存在于所有使用远程数据存储的组合框中。

    我有以下jsonstore:

      var companies = new Ext.data.JsonStore({
        url: '/Company/GetCompanies/',
        root: 'companies',
        fields: [
        { name: 'CompanyID'},
        { name: 'CompanyName'}]
      });
    

    组合框:

    new Ext.form.ComboBox({
        fieldLabel: 'Company',
        typeAhead: false,
        triggerAction: 'all',
        valueField: 'CompanyID',
        hiddenName: 'CompanyID',
        displayField: 'CompanyName',
        mode: 'remote',
        lazyRender: true,
        store: companies,
        allowBlank: true,
        editable: false,
        listeners: {
            'focus': function(){
              if(companies.data.length > 0)
              {
               debugger; // This is only ever fired after the aforementioned breakpoint method.
              }
            }
        }
    })
    

    控制器返回的JSON:

    {"companies":[{"CompanyID":1,"CompanyName":"Test"},{"CompanyID":2,"CompanyName":"Test1"
    },{"CompanyID":3,"CompanyName":"Test2"}]}
    
    1 回复  |  直到 16 年前
        1
  •  4
  •   JulianR    16 年前

    据我所知,我在贴出一个问题几分钟后就找到了解决办法。

    我切换到一个存储区而不是JSonStore并指定 method: 'GET' 代理的属性,它起作用。但我不知道这为什么管用,也不知道为什么只有我有问题。我的控制器操作接受GET和POST,所以不是这样。

    商店:

    var companies = new Ext.data.Store({
          proxy: new Ext.data.HttpProxy({ url: '/Company/GetCompanies/', method: 'GET' }),
          reader: new Ext.data.JsonReader({ root: 'companies' }, [{ name: 'CompanyID', mapping: 'CompanyID' }, { name: 'CompanyName', mapping: 'CompanyName'}])
    });