1

私はExt.grid.Panelwith 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 に答える