【问题标题】:Kendo treeview drag and drop always last position of parent剑道树视图拖放总是父级的最后位置
【发布时间】:2020-02-04 11:59:15
【问题描述】:

我在剑道树视图中遇到问题。我有一棵带有“文件夹”的树。我启用了拖放功能,但是每当我将一个文件夹拖放到另一个文件夹中时,它就会被定位为该文件夹的最后一个项目。

我的数据源是 kendo.data.HierarchicalDataSource 类型,传入的数据按字母顺序按“标题”/文本排序。我希望删除的节点也按字母顺序排序,因此我想以某种方式触发对删除另一个节点的节点的手段调用。

我将如何实现这一目标?

我已经尝试在 kendo.data.HierarchicalDataSource 对象中定义排序参数,但这并没有太大变化。

【问题讨论】:

    标签: kendo-ui kendo-treeview


    【解决方案1】:

    在底层,HierarchicalDataSource 是一个 DataSource,它具有一组子项(项),这些子项(项)也是 DataSource。通常,项目只是被视为普通字段,对主数据源的操作不会在子数据源上递归完成。

    排序就是一个例子。正如您在https://docs.telerik.com/kendo-ui/controls/navigation/treeview/how-to/binding/sort-child-nodes 上看到的,您需要自己对子项进行递归排序:

        function setSort(items){
          for(var i=0; i < items.length; i++){
            if(items[i].hasChildren){
              items[i].children.sort({field: "FullName", dir: "desc"});
              setSort(items[i].children.view());
            }
          }
        }
    

    【讨论】:

    • 感谢您的帮助!我试过你的例子,它比我需要的还要多。在调用“移动节点”端点后的结果回调中,我添加了 target.children.sort({ field: "text", dir: "asc" });其中 target 是我的 dropTarget 和 tadaa 的 dataItem,它起作用了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多