Extjs combobox不会自动选择displayField
更新- 我还在JSFIDLE中做了一个模拟 并带有一个窗体面板: 我有一只吼叫的牛。 当我使用以下代码设置表单值时:Extjs combobox不会自动选择displayField,extjs,combobox,Extjs,Combobox,更新- 我还在JSFIDLE中做了一个模拟 并带有一个窗体面板: 我有一只吼叫的牛。 当我使用以下代码设置表单值时: this.form.loadRecord(data); 除了组合外,整个表单都正常运行。 我得到的不是displayField,而是display中的valueField 如上图所示,组合框应该显示单词Walla displayField,而不是1 valueField 我就是这样使用它的: { "xtype": 'foreigncombo' , "name": 'Bra
this.form.loadRecord(data);
除了组合外,整个表单都正常运行。
我得到的不是displayField,而是display中的valueField
如上图所示,组合框应该显示单词Walla displayField,而不是1 valueField
我就是这样使用它的:
{
"xtype": 'foreigncombo'
, "name": 'Brand.Id'
, "fieldLabel": 'Brand.Id'
}
表单显示和ComboAjax请求之间没有竞争,combo存储是自动加载的:true,这意味着我看到它已经加载了
谢谢我以你的小提琴为例。在此小提琴的第87行Ext.ComponentQuery.query'combobox'..中放置断点,并将监视设置为Ext.ComponentQuery.query'combobox'[0].store.data。。你会注意到商店没有数据。这可能与我在评论中提到的有关 我知道一定有更好的方法可以做到这一点,但我通常使用的解决方法是在应用程序之前的某个时间加载存储,或者使用同步Ext.Ajax.request并在存储中一次加载每条记录 由于这是一个品牌组合,我认为您可以在应用加载和查找商店之前加载商店,而不是每次创建foreigncombo组件时都创建一个新的商店,因此第一个解决方案应该是可行的 至于第二个解决方法,它也应该可以工作,它需要更多的编码,但实际上非常简单。应该是这样的
Ext.Ajax.request({
url:'your/url/',
async:false,
.....
success:function(response){
var records = Ext.JSON.decode(response.responseText);
for(var m=0; m<records.length; m++){
var record = Ext.create('YourBrandModel',{
abbr:records[m].abbr,
name:records[m].name
});
store.add(record);
}
}
})
您应该尽可能少地执行此操作,因为如果每次创建foreigncombo时都调用它,可能会降低用户体验,因此在创建一个foreigncombo之前检查此存储是否存在可能是一个好主意
请考虑到我还没有测试过这段代码,所以为了让它工作,您可能需要稍微调整一下。但是它应该会让你走上正轨。我没有得到最后一条粗体的评论,但是你是否在加载视图之前设置了一个断点,并检查了存储是否加载了数据?我以前遇到过这个问题,主要是因为当窗口出现时,商店没有完成加载。。。但现在还没有说这是事实
Ext.Ajax.request({
url:'your/url/',
async:false,
.....
success:function(response){
var records = Ext.JSON.decode(response.responseText);
for(var m=0; m<records.length; m++){
var record = Ext.create('YourBrandModel',{
abbr:records[m].abbr,
name:records[m].name
});
store.add(record);
}
}
})