通过拖放将kendo Treeview复制到节点

时间:2018-07-03 20:40:44

标签: jquery treeview kendo-asp.net-mvc kendo-treeview

我从服务器端源并排填充了两个树视图。
左侧的树视图包含分组的权限。 正确的树形视图包含人员。

我在放置事件中设置了规则,以防止用户将除权限之外的任何人拖到除人之外的任何人上:

 $("#tvw-permissions").kendoTreeView({
            dragAndDrop: true,
            dataSource: permissiondatasource,
            dataTextField: ["Text"],
            dataSpriteCssClassField: ["SpriteCssClass"],
            drop: function (e) {
                var srcTree = $($(e.sourceNode).closest("div.k-treeview")).data("kendoTreeView").element[0].id;
                var destTree = $($(e.destinationNode).closest("div.k-treeview")).data("kendoTreeView").element[0].id;

                if (srcTree == destTree) {
                    e.setValid(false);

                }

                var destinationid = $('#' + destTree).data("kendoTreeView").dataSource
                    .getByUid($(e.destinationNode).data("uid")).id;

                if (!destinationid.startsWith('person')) {
                    e.setValid(false);
                    return;
                }
            }

到目前为止,一切都很好。但是,我确实希望能够将同一权限拖给多个人。 Kendo Treeview在拖放操作中执行“移动节点”。

如何防止源树上被拖动的节点移动?

1 个答案:

答案 0 :(得分:0)

解决方案:通过首先取消放置动作,然后手动将sourceNode的副本添加到“目标”树视图中,我可以使用此方法:

 $("#tvw-permissions").kendoTreeView({
     dragAndDrop: true,
     dataSource: permissiondatasource,    
     drop: function (e) {
       e.preventDefault();
       var treeview = $("#tvwPersons").data("kendoTreeView");
       var copy = this.dataItem(e.sourceNode).toJSON();
       treeview.append(copy, $(e.destinationNode));
       return;
    }