如何防止删除,编辑和拖动树中的记录。 Extjs

时间:2018-11-28 12:07:14

标签: javascript extjs

在Ext.tree.Panel中,记录编辑是通过rowediting插件完成的。 如何防止删除或编辑最上面的根记录?

以及如何禁止拖动除childNodes之外的顶级记录?

使用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 :(得分:1)

只需添加到解决方案中,即可避免拖动最上面的记录:

       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();
                };
            }
        }

答案 1 :(得分:0)

为防止编辑,可以使用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();
    }
},