Получение кендо Treeview для копирования узла при перетаскивании - PullRequest
0 голосов
/ 03 июля 2018

У меня есть два дерева рядом друг с другом из источника на стороне сервера.
Левое дерево содержит разрешения, которые сгруппированы. Правое дерево содержит людей.

Я установил правила в событиях отбрасывания, чтобы пользователь не мог перетаскивать что-либо кроме разрешения на что-либо, кроме человека:

 $("#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 голосов
/ 04 июля 2018

РЕШЕНИЕ: я заставил это работать, сначала отменив действие удаления, а затем вручную добавив копию sourceNode в древовидное представление Destination:

 $("#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;
    }
...