1

背後にリモート データ ストアがある ExtJS コンボボックスがあります。すべてのブラウザーで問題なく動作しますが、IE (私がテストしたすべてのバージョン) ではコンボボックスが一瞬拡大し、「読み込み中」アイコンが表示されてから再び消えます。この後もう一度クリックしても、まったく展開しません。基本的に、それは移入されていません。

サーバー側では、すべて問題ありません。Json データを返す Controller アクションに (ASP.NET MVC を使用して) 到達します。Json は適切に形成されています (少なくとも他のすべてのブラウザはそれを飲み込みます)。

奇妙なことに、Controller アクションにブレークポイントを設定すると、クライアント側で JsonStore が適切に埋められます。これは、ある種のタイミングの問題を示しています。

もう 1 つの奇妙な点は、たまに正常に動作することです。偶然か何かでタイミングが合ったのかもしれません。

コンボボックス モードを「ローカル」に設定.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"}]}
4

1 に答える 1

4

数字、質問を投稿してから数分後に解決策を見つけました。

JsonStore の代わりに Store に切り替えmethod: 'GET'、プロキシのプロパティを指定したところ、機能しました。なぜこれが機能するのか、なぜIEだけが問題を抱えているのか、私にはわかりません。私の Controller アクションは 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'}])
});
于 2009-03-25T15:11:46.250 に答える