当前位置: 首页 > 知识库问答 >
问题:

在拖放时获取剑道树视图以复制节点

姚棋
2023-03-14

我有两个从服务器端源并排填充的treeview。
左边的treeview包含分组的权限。右边的treeview包含人。

我已经在drop事件中设置了规则,以防止用户将权限以外的任何内容拖动到除个人以外的任何内容:

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

到目前为止还好。不过,我确实希望能够将相同的权限拖动到多个人。剑道树视图在拖放操作上做一个“移动节点”。

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

共有1个答案

庞意智
2023-03-14

解决方案:我首先取消drop操作,然后手动将sourceNode的副本添加到目标TreeView中,从而使其工作:

 $("#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;
    }
 类似资料:
  • 使用此示例,我想创建带有节点的TreeView,我可以拖动这些节点来更改它们的位置。 我试图实现这个例子,但我在这里遇到了一个问题: 我得到了

  • 我正尝试在另一个窗口中显示ttk树视图。唯一的选择似乎是遍历原始的树视图并相应地填充新的树视图。 然而,我似乎不能得到所有的(许多)子文件夹在正确的地方,所有的东西都是混淆的2D级别(即,我得到根文件夹和他们的子代正确,然后子文件夹似乎插入在随机的位置)。

  • 我使用的是WPF ListView,其中SelectionMode设置为Extended(只能按ctrl键选择多个项目)。我需要实施D 不幸的是,这样的解决方案有一个错误:选择单个项目(未按 ctrl)有效。但是,我需要双击以选择项目,同时按ctrl才能选择多个项目。使用 ListView 的 PreviewMouseDown 或 ListViewItem 的 PreviewMouseDown 时

  • 问题内容: 我在创建JTree时遇到困难,该JTree允许通过将节点拖放到JTree中进行重组。看来应该比较简单。我在网上看过示例,但似乎无法在自己的代码中实现它。 例如,sun提供的这种功能允许在不同组件之间拖动到树中,但不能从树本身内部拖动。 而且我也发现了这一点,它允许您将文本拖到JTree中,但不能拖到树中。 任何参考或建议将是巨大的。谢谢 问题答案: 之前没有做过,但是谷歌快速搜索在这里

  • 我正在尝试通过拖放创建一个可重新排序的。 基本上,当我在中拖动一些东西时,它应该根据拖动情况重新排序。 我有这个,里面有6个。 所以看起来就像下面的截图 我已经按照下面的代码在中为LongClickListner和DragListener注册了所有 因此,当您将红色的拖动到灰色的时,将调用。然后,我只需移除红色的并将其添加到已结束的灰色的索引中,这样我就可以实时重新排序。因此,当我在中移动时,我得

  • pre { white-space: pre-wrap; } 当在一个应用中使用树(Tree)插件,拖拽(drag)和放置(drop)功能要求允许用户改变节点位置。启用拖拽(drag)和放置(drop)操作,所有您需要做的就是把树(Tree)插件的 'dnd' 属性设置为 true。 创建树形菜单(Tree)     $('#tt').tree({         dnd: true,