我有一个用于网格列的组合框编辑器。它也是可编辑的。组合框的商店有autoLoad配置,设置为false意味着当用户点击组合框时,商店被加载。如果我没有在组合框中键入任何内容并单击它,它工作正常。但是,如果我首先在组合框中键入内容,然后单击外部,然后再次单击组合框以加载下拉列表,它根本不会渲染。它只显示加载,然后不显示下拉。
这是一个非常奇怪的问题,因为我对其他列也有类似的组合框,但它们工作正常,但它们不可编辑。
我已经打破了很多天,但没有解决方案!有人可以帮忙吗?
editor: {
xtype: 'combobox',
store: contextDropDownStoreforFactGrid,
queryMode: 'remote',
id: 'fact_contextId',
displayField:'context',
valueField: 'context',
vtype: 'alphanum',
listeners: {
beforeQuery: function(query) {
contextDropDownStoreforFactGrid.removeAll();
contextDropDownStoreforFactGrid.load();
}
}
}
商店
var contextDropDownStoreforFactGrid = Ext.create('Ext.data.Store', {
fields: [{name:'context',type:'string'}],
proxy: {
type: 'ajax',
url: context + '/FcmServlet',
extraParams: {
'action': 'getContextDropDownValues'
},
reader: {
type: 'json'
}
},
autoLoad: false
});
json是:
[{"context":"Uplift"},{"context":"QTCUplift"},{"context":"MSRP"},{"context":"Khanij"}]
答案 0 :(得分:0)
我不知道你为什么要在问题之前加载商店,我的意思是:
listeners: {
beforeQuery: function(query) {
contextDropDownStoreforFactGrid.removeAll();
contextDropDownStoreforFactGrid.load();
}
}
}
如果您删除上面这段代码会发生什么? 你认为它不会加载商店吗?我不认为,就像往常一样它应该加载。 我想问题是你在加载之前删除记录,这根本不是必需的
contextDropDownStoreforFactGrid.removeAll();
因为根据API
beforequery :( Object queryEvent)在处理所有查询之前触发
我认为在查询事件之前不需要明确处理。
答案 1 :(得分:0)
在 beforeQuery 中再次设置 displayField 和 valueField ,它会将此问题排除在外。
答案 2 :(得分:0)
删除侦听器代码并将以下属性添加到组合框
queryMode: 'local'
代替代码中的“远程”