当第一次单击当前编辑的行中的ComboBox时,Ext 4 RowEditor编辑取消

时间:2012-08-21 18:54:57

标签: javascript extjs extjs4

我有一个带有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会这样做呢?

1 个答案:

答案 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
});