我有一个 ExtJS 组合框,后面有一个远程数据存储。在所有浏览器中它都可以正常工作,除了在 IE(我测试过的所有版本)中,组合框会扩展一秒钟,显示“正在加载”图标,然后它又消失了。在此之后再次单击它不会使其不再扩展。基本上:它没有被填充。
在服务器端,一切都很好。到达返回 Json 数据的控制器操作(使用 ASP.NET MVC)。Json 格式正确(所有其他浏览器至少会吞下它)。
奇怪的是,当我在 Controller 操作中放置断点时,JsonStore 会在客户端正确填充。这对我来说表明某种时间问题。
另一个奇怪的事情是,每隔一段时间,它就可以正常工作。也许是因为时机恰到好处之类的。
如果我将组合框模式设置为“本地”并在远程数据存储上强制使用 a .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"}]}