Как предотвратить удаление, редактирование и перетаскивание записей в дереве.Extjs - PullRequest
0 голосов
/ 28 ноября 2018

В Ext.tree.Panel редактирование записей осуществляется с помощью плагина редактирования строк.Как предотвратить удаление или редактирование самой верхней корневой записи?

А как запретить перетаскивание верхних записей, кроме дочерних узлов?

Перетаскивание выполняется с помощью плагина treeviewdragdrop.Ниже приведен код плагина.

...
plugins: [{
        ptype: 'rowediting',
        clicksToMoveEditor: 1,
        autoCancel: false,
        listeners: {
            afteredit : function (editor, context, eOpts ){
                context.store.reload();

            },
            canceledit : function ( editor, context, eOpts ){
                context.store.reload();

            }
        }
    }],
    viewConfig: {
        plugins: [{
            ptype: 'treeviewdragdrop',
            containerScroll: true
        }]
    }, 
...

Пример в fiddle , в файле app / view / QuestionTree.js

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Просто чтобы добавить в решение, чтобы предотвратить перетаскивание на верхние записи, вы также можете использовать:

       listeners: {
            viewready: function (tree) {
                var view = tree.getView(),
                    dd = view.findPlugin('treeviewdragdrop');

                dd.dragZone.onBeforeDrag = function (data, e) {
                    var rec = view.getRecord(e.getTarget(view.itemSelector));
                    return rec.isLeaf();
                };
            }
        }
0 голосов
/ 28 ноября 2018

Для предотвращения редактирования вы можете использовать событие beforeedit, где вы можете вернуть false и отменить операцию.Таким же образом вы можете использовать beforedrop для предотвращения падения.Вот FIDDLE QuestionTree.js)

beforeedit: function (editor, context) {
    return !context.record.isRoot();
}


listeners: {
    beforedrop: function (node, data, overModel, dropPosition) {
        return data.records[0].isLeaf();
    }
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...