背後にリモート データ ストアがある 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"}]}