我有一个带有RowEditor插件的Ext.grid.Panel
,它包含一个带有组合框编辑器的列:
{
dataIndex: 'parentId',
text: 'Parent category',
editor: {
store: store,
valueField: 'categoryId',
displayField: 'name',
xtype: 'combobox',
allowBlank: true
}
商店看起来像这样:
var store = Ext.create('Ext.data.Store', {
model: 'Category',
autoLoad: true,
proxy: {
type: 'rest',
url: 'api/categories',
reader: {
type: 'json',
root: 'categories'
}
}
});
模特:
Ext.define('Neopod.model.Category', {
extend: 'Ext.data.Model',
fields: ['categoryId', 'name', 'parentId'],
})
第一次编辑网格行并单击组合框时,ExtJS会从服务器触发数据加载,并且roweditor会自动取消。因此用户希望看到组合下拉列表,但组合未打开,而编辑模式取消。
那么为什么ExtJS会这样做呢?
答案 0 :(得分:1)
一个简单的处理方法是使用:queryMode: 'local'
配置组合框,以便在扩展时不会尝试重新加载。
使用您的示例:
{
dataIndex: 'parentId',
text: 'Parent category',
editor: {
store: store,
valueField: 'categoryId',
displayField: 'name',
xtype: 'combobox',
allowBlank: true,
queryMode: 'local'
}
}
您还可以尝试使用RowEditing
配置autoCancel: false
插件,例如:
Ext.create('Ext.grid.plugin.RowEditing', {
pluginId: 'rowediting',
clicksToEdit: 2,
autoCancel: false
});