首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在kendo treeview上展开选定子节点的父节点

如何在kendo treeview上展开选定子节点的父节点
EN

Stack Overflow用户
提问于 2014-10-10 00:28:37
回答 3查看 4.8K关注 0票数 1

嗨,剑道爱好者。在kendo treeview上我遇到了一个小问题,如果树视图是父节点,我可以扩展它的选定子节点,但是我可以展开它的大父节点,下面是我的小代码:

代码语言:javascript
运行
复制
data.forEach(function (entry) {
                        var treeView = $("#sysfunc_ktreeview").data('kendoTreeView');
                        var dataSource = treeView.dataSource;
                        var dataItem = dataSource.get(entry);
                        var node = treeView.findByUid(dataItem.uid);
                        var checkbox = $("input[type='checkbox']", node)[0];
                        checkbox.click();
                    });

在本例中,我从数据库中获取数组。但是在这里,如果有子节点被选中,但是id(父节点)不在数组中,我就不能扩展父节点。任何巨大的帮助都将不胜感激。这段小代码来自OnaBai爵士..。谢谢,先生

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-10 05:47:18

如果要单击iddata中的项的所有祖先,请添加以下代码行:

代码语言:javascript
运行
复制
var ancestors = $(node).parents("li[role='treeitem']");
$(">div>span>input", ancestors).click();

这将为每个节点选择当前节点an的所有祖先clicks input

因此,您的代码应该如下所示:

代码语言:javascript
运行
复制
  data.forEach(function (entry) {
      var treeView = $("#treeview").data('kendoTreeView');
      var dataSource = treeView.dataSource;
      var dataItem = dataSource.get(entry);
      var node = treeView.findByUid(dataItem.uid);
      var checkbox = $("input[type='checkbox']", node)[0];
      checkbox.click();
      var ancestors = $(node).parents("li[role='treeitem']");
      $(">div>span>input", ancestors).click();
  });

您可以看到它在这里运行:http://dojo.telerik.com/@OnaBai/IRom

票数 4
EN

Stack Overflow用户

发布于 2017-01-20 19:01:13

我想出的最好的解决办法是:

突出显示的代码:

代码语言:javascript
运行
复制
dataBound: function(e){
    // expands tree to the selected node
    var root = e.node ? $(e.node) : this.element;
    // expands only selected checkboxes and parents 
    this.expand(root.find(".k-item input[type=checkbox]:checked").parents());
},

完整代码:

代码语言:javascript
运行
复制
$(".locationTree").kendoTreeView({
    loadOnDemand: false,
    checkboxes: true,
    select: function(e){
        e.preventDefault();
    },
    dataSource: {
        type: "json",
        data: processTable(flatData, "id", "parent", 0)
    },
    dataBound: function(e){
        // expands tree to the selected node
        var root = e.node ? $(e.node) : this.element;
        //this.expand(root.find(".k-item")); // expands all
        // expands only selected checkboxes and parents 
        this.expand(root.find(".k-item input[type=checkbox]:checked").parents());
    },
});
票数 2
EN

Stack Overflow用户

发布于 2014-10-15 01:21:43

找到了更好的方法,先生

代码语言:javascript
运行
复制
success: function (data) {
        $.each(data, function (index, entry) {

                        var dataSource = treeView.dataSource;
                        var dataItem = dataSource.get(entry);

                        if (!dataItem.hasChildren)
                        {
                            dataItem.set("checked", true);
                        }
                        var node = treeView.findByUid(dataItem.uid);

                        parents.push(treeView.dataItem(treeView.parent(node)).id);

                        if (index + 1 == data.length) {
                            setTimeout(function () {
                                self.expandParents(parents, treeView);
                            }, 100);
                        }                         
                    });
                    setTimeout(function () {
                        self.filterChange(treeView, data);
                    }, 100);
                }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26290086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档