我正试图阻止父节点(“LLCA”)之外的节点的拖放而没有运气。
有什么建议吗?
我最终使用下面的代码让它工作:
function onDrop(e) {
var dst = e.destinationNode;
var first = $('.k-item:first');
var pos = e.dropPosition;
if (dst && dst.uid === first.uid && pos !== "over") {
e.setValid(false);
}
}
答案 0 :(得分:3)
让我们定义treeview
:
var tree = $("#tree").kendoTreeView({
dataSource :content,
dragAndDrop:true
}).data("kendoTreeView");
我要做的是添加drop
回调,我将控制它:
树的定义是:
var tree = $("#tree").kendoTreeView({
dataSource :content,
dragAndDrop:true,
drop :function (ev) {
var dst = tree.dataItem(ev.destinationNode);
var first = tree.dataItem(".k-item:first");
var pos = ev.dropPosition;
if (dst && dst.uid === first.uid && pos !== "over") {
console.log("invalid");
ev.setValid(false);
}
}
}).data("kendoTreeView");
查看http://docs.kendoui.com/api/web/treeview#drop以获取有关drop
活动的信息。
答案 1 :(得分:2)
因为我无法对答案发表评论,所以我会写自己的答案。
用户Mithrilhall询问MVC包装器,最顶层的答案只能阻止移动到根节点。
我将尝试回答两个Mithrilhall并提供一个示例,您只能在其父级的上下文中移动子级。换句话说,只允许任何父母的子女在父母中改变他们的顺序。
首先,对于MithrilHall来说,这就是你如何看待MVC中的事件。
MATCH(title) AGAINST('+cat hat' IN BOOLEAN MODE)
树视图中还有其他活动,你可以为自己带来一个雄鸟。参数是javascript函数的名称。以下是此MVC包装器的示例javascript函数,以防止子进程移出其父级,但允许子进程仍在父级内移动。
@(Html.Kendo().TreeView()
.Name("ourTreeView")
.Events(e => e.Drop("treeViewDrop"))
我在我的数据源中建模了一个parentID字段。你可以通过很多方式实现这一目标。 dataItem方法返回一个kendo树视图项,因此它包含所有建模字段。
同样明白,当您移动到无法放置的位置时,此解决方案不会更改窗口小部件以显示X.这是另一个解决方案的另一个问题。
我希望这有帮助,祝你好运!