访问所选Kendo TreeView节点的子节点

Stu*_*ing 2 javascript telerik-mvc kendo-ui kendo-treeview

我有一个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")
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

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

完整性模板看起来像这样......

<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>
Run Code Online (Sandbox Code Playgroud)

现在,我有触发器的代码,并且工作得很好.

我有代码来更新隐藏数据.再次.别担心.

我无法弄清楚的是如何简单地获取触发器触发时所选节点的所有子节点(和granchild等)节点.

如果我在最初点击节点时试图找到孩子们,我希望能够说出类似...

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

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

有没有人有任何建议我怎么可能这样做?

Lar*_*ner 5

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

var dataItem = e.sender.dataItem(e.node);
if (dataItem.hasChildren) {
    var children = dataItem.children.data();
}
Run Code Online (Sandbox Code Playgroud)

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

(演示)