Возьмите плагин CellEditing от слушателей редактора. - PullRequest
3 голосов
/ 14 февраля 2012

У меня есть сетка с редактированием ячеек. Когда кто-то нажимает ввод в celleditor - extjs нужно открыть редактор в следующей строке и той же ячейке. Я знаю, что это действие делает startEdit () метод класса CellEditing. Но как я могу получить доступ к CellEditing этой сетки от слушателя CellEditor.

listeners:{
    specialkey: function(field, e){
        if (e.getKey() == e.ENTER) {
            var grid = Ext.getCmp('sheetproductionrestin');
            var store = Ext.getCmp('sheetproductionrestin').store;
            var selModel = grid.getSelectionModel();
            var selectedRecord = selModel.getLastSelected();

            var recordIndex = store.indexOf(selectedRecord);
            var nextRecord = store.getAt(recordIndex + 1);
            selModel.select(nextRecord);
        }
    }
}

Этот код фокусирует следующую строку, но как я могу получить доступ к плагину редактирования и вызвать StartEdit отсюда?

Ответы [ 2 ]

3 голосов
/ 14 февраля 2012

Вы можете получить доступ к плагину с помощью getPlugin метода при условии, что вы присвоили плагину свой плагин:

var grid = Ext.create('Ext.grid.Panel',{
    plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
        clicksToEdit: 2,
        pluginId: 'cellplugin'
    })],
    columns: [
        {
        header: 'Name',
        dataIndex: 'name',
        editor: {
            xtype: 'textfield',
            listeners: {
                specialkey: function(field, e) {
                    if (e.getKey() == e.ENTER) {
                        var grid = Ext.getCmp('sheetproductionrestin');
                        var store = Ext.getCmp('sheetproductionrestin').store;
                        var selModel = grid.getSelectionModel();
                        var selectedRecord = selModel.getLastSelected();

                        var recordIndex = store.indexOf(selectedRecord);
                        var nextRecord = store.getAt(recordIndex + 1);
                        selModel.select(nextRecord);

                        var plugin = grid.getPlugin('cellplugin');
                        plugin.startEdit(nextRecord, grid.columns[0]);
                    }
                }
            }
        }},
        // ...
    ],
    // ...
});

Вот jsfiddle (первый столбец редактируемый).

0 голосов
/ 16 января 2013

Обычно я просто сохраняю ссылку на плагин для редактирования ячеек следующим образом:

myGrid.cellEditor = Ext.create('Ext.grid.plugin.CellEditing');

Затем вы можете назначить его сетке следующим образом:

var myGrid = Ext.create('Ext.grid.Panel',{
    plugins: [myGrid.cellEditor]

Затемкогда вам нужно начать редактирование, вы можете позвонить myGrid.cellEditor.startEdit(colNumber)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...