我有一个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"}]}