【问题标题】:Accessing the Child Nodes of a Selected Kendo TreeView Node访问选定 Kendo TreeView 节点的子节点
【发布时间】:2015-03-09 15:31:36
【问题描述】:

我有一个 Ajax 填充树视图....

@(Html.Kendo().TreeView()
    .Name("fao")
    .HtmlAttributes(new {@class="fixed-height" })
    .DataTextField("Text")
    .TemplateId("treeview-item-template")
    .DataSource(ds => ds
        .Read(r => r
            .Action("_ModuleData", "Home")
        )
        .Model(m => m
            .Children("Items")
            .HasChildren("HasChildren")
        )
    )
)

我需要更新隐藏在每个子项的一些数据 - 在模板中 - 当发生动作(在控件之外触发)时。

为了完整起见,模板如下所示...

<script id="treeview-item-template" type="text/kendo-ui-template">
    #= item.Text #<input type='hidden' class='hidden-data' data-fal='#= item.Fal#' data-uid='#=item.uid#'/>
</script>

现在,我有了触发器的代码,而且效果很好。

我有更新隐藏数据的代码。再次。不用担心。

我想不通的是如何简单地获取触发器触发时选择的节点的所有子节点(和孙子节点等)。

如果我在最初单击节点时试图接近孩子,我有点希望能够说出类似...

function doSomething(e)
{
    for(n=0; n<e.node.nodes.length; n++)
    {
        doSomethingElse(e.node.nodes[n]);
    }
}

但似乎不存在这样的功能。

有没有人对我如何解决这个问题有任何建议?

【问题讨论】:

    标签: javascript kendo-ui telerik-mvc kendo-treeview


    【解决方案1】:

    您可以通过从 DOM 节点获取的模型访问子节点:

    var dataItem = e.sender.dataItem(e.node);
    if (dataItem.hasChildren) {
        var children = dataItem.children.data();
    }
    

    这只会让你得到直接的孩子,所以你必须让它递归才能得到所有的后代。

    (demo)

    【讨论】:

      【解决方案2】:

      好的。

      看来我可以像这样获得 TreeView 上的所有节点...

      var allNodes = $(".k-item");
      

      同样,我可以像这样获取给定节点的所有子节点...

      // node is the node under which we need all of the child nodes
      var childNodes = $(".k-item", node);
      

      而且,对于 any 给定的节点,我可以像这样获取 dataItem ...

      var dataItem = tree.dataItem(node);
      

      我相信,只有当所选节点下方的所有子节点的数据都已加载时,上述所有内容才成立。就我而言,我是从远程数据加载(使用 AJAX),但我的网格定义中有 .LoadOnDemand(false)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-21
        • 1970-01-01
        • 1970-01-01
        • 2015-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多