Ext JS 3.4: прослушиватель событий для редактирования ячеек - PullRequest
0 голосов
/ 05 декабря 2018

Я столкнулся с проблемой запуска события редактирования с помощью редактора ячеек в Ext Js 3.4.

Я пытаюсь вызвать вызов ajax для ячейки, отредактированной после нажатия 'Enter'.

Пока я просто заменил на console.log('hi'), но после нажатия 'Enter' ничего не отображается.

Я не уверен, что не так в моем коде.Цените, если кто-то может указать на это.Спасибо.

var grid = new Ext.grid.EditorGridPanel({
    store: api_store,
    loadMask: true,
    clicksToEdit: 1,
    tbar: [{
        text: 'Create',
        handler: function () { }
    }],
    columns: [
        {
            id: 'name',
            header: 'Key Name',
            width: 300,
            sortable: true,
            dataIndex: 'name',
            editor: {
                xtype: 'textfield',
                allowBlank: false,
                listener: {
                    edit: function (el) {
                        console.log('hi');
                    }
                }
            }
        },
        {
            header: 'Key Value',
            width: 500,
            sortable: false,
            dataIndex: 'key'
        }
    ],
    sm: new Ext.grid.RowSelectionModel({ singleSelect: true }),
    viewConfig: {
        forceFit: true
    },
    height: 210,
    stripeRows: true,
    height: 350,
    title: 'Keys'
});

1 Ответ

0 голосов
/ 05 декабря 2018

Решение:

Использовать EditorGridPanel afteredit событие:

afteredit (e)

Запускается после редактирования ячейки.Объект события редактирования имеет следующие свойства

  • grid - Эта сетка
  • запись - Редактируемая запись
  • field - Редактируемое имя поля
  • значение - устанавливаемое значение
  • originalValue - исходное значение поля перед редактированием.
  • строка - индекс строки сетки
  • столбец - столбец сеткиindex

Параметры:

e: Объект Событие редактирования (описание см. выше)

Пример:

Ext.onReady(function () {        

        var api_store = new Ext.data.ArrayStore({
            fields: ['key', 'name'],
            data: [
                ['1', 'Name1'],
                ['2', 'Name2'],
                ['3', 'Name3']
            ]
        });


        var grid = new Ext.grid.EditorGridPanel({
            renderTo: Ext.getBody(),
            store: api_store,
            loadMask: true,
            clicksToEdit: 1,
            tbar: [{
                text: 'Create',
                handler: function () { }
            }],
            listeners: {
                afteredit: function(e) {
                    console.log('After edit. Column: ' + e.field);
                }
            },
            columns: [
                {
                    id: 'name',
                    header: 'Key Name',
                    width: 300,
                    sortable: true,
                    dataIndex: 'name',
                    editor: {
                        xtype: 'textfield',
                        allowBlank: false
                    }
                },
                {
                    header: 'Key Value',
                    width: 500,
                    sortable: false,
                    dataIndex: 'key'
                }
            ],
            sm: new Ext.grid.RowSelectionModel({ singleSelect: true }),
            viewConfig: {
                forceFit: true
            },
            height: 210,
            stripeRows: true,
            height: 350,
            title: 'Keys'
        });     

});
...