Javascript 访问选定剑道树视图节点的子节点
我有一个Ajax填充的树视图Javascript 访问选定剑道树视图节点的子节点,javascript,kendo-ui,telerik-mvc,kendo-treeview,Javascript,Kendo Ui,Telerik Mvc,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("
@(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>
var allNodes = $(".k-item");
// node is the node under which we need all of the child nodes
var childNodes = $(".k-item", node);
var dataItem = tree.dataItem(node);
#=项目.文本#
现在,我有了触发器的代码,它工作得很好
我有代码来更新隐藏的数据。再一次。不用担心
我搞不懂的是,如何在触发时简单地获取所选节点的所有子节点(和granchild等)节点
如果我试图在最初单击节点时找到子节点,我希望能够说一些类似于
function doSomething(e)
{
for(n=0; n<e.node.nodes.length; n++)
{
doSomethingElse(e.node.nodes[n]);
}
}
功能剂量仪(e)
{
对于(n=0;n您可以通过从DOM节点获得的模型访问子节点:
var dataItem = e.sender.dataItem(e.node);
if (dataItem.hasChildren) {
var children = dataItem.children.data();
}
这只会让您直接得到子代,所以您必须使其递归以获得所有子代
()好的
看起来我可以像这样找到树视图上的所有节点
<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>
var allNodes = $(".k-item");
// node is the node under which we need all of the child nodes
var childNodes = $(".k-item", node);
var dataItem = tree.dataItem(node);
同样,我可以得到给定节点的所有子节点,如下所示
<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>
var allNodes = $(".k-item");
// node is the node under which we need all of the child nodes
var childNodes = $(".k-item", node);
var dataItem = tree.dataItem(node);
对于任何给定的节点,我都可以得到如下数据项
<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>
var allNodes = $(".k-item");
// node is the node under which we need all of the child nodes
var childNodes = $(".k-item", node);
var dataItem = tree.dataItem(node);
我相信只有在所选节点下的所有子节点的数据都已加载的情况下,上述所有内容才有效。在我的例子中,我是从远程数据(使用AJAX)加载的,但我的网格定义中有.LoadOnDemand(false)