1

我有一个Ext.grid.Panel带有 RowEditor 的插件,它包含一个带有组合框编辑器的列:

    {
        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 会这样呢?

4

1 回答 1

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
});
于 2012-08-21T23:07:12.300 回答