在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上
答案 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();
}
},