Kendo Treeview - 禁用所有子节点

时间:2014-08-22 13:42:49

标签: kendo-ui kendo-asp.net-mvc

我有一个要求,我有一个带复选框的kendo树视图,并且必须在选中父复选框时禁用子节点。

我的树视图通过MVC模型绑定绑定到一个层次数据模型。

@(Html.Kendo().TreeView()
                  .Name("TreeViewModel")
                  .Checkboxes(true)
                  .CheckboxTemplateId("treeview-template")
                  .ExpandAll(true)
                  .HighlightPath(true)
                  .BindTo(Model.TreeViewData)
                  .DragAndDrop(false)
                  .LoadOnDemand(false)

我的复选框模板看起来像

<input type="checkbox" onclick="Addnode('#: item.text #', '#: item.id #', this.checked)" id ="#: item.id #" />

我正在尝试获取已检查节点的子节点列表,但还没有取得很大进展。在AddNode函数中,我使用

    var dataSource = treeview.dataSource;
    var dataItem = dataSource.get(id);
    var node = treeview.findByUid(dataItem.uid);

获取所选节点,但node.hasChildren返回undefined,我似乎找不到解决方案来获取此节点的子节点列表。

我在这里尝试过JS小提琴Js Fiddle

请有人帮助我。

1 个答案:

答案 0 :(得分:1)

定义以下JavaScript代码:

$("#treeview").on("change", ":checkbox", function(e) {
    // Get reference to the Tree View
    var treeview = $("#treeview").data("kendoTreeView");

    // Get the node owning the checked checkbox
    var current = $(e.target).closest("li.k-item");

    // Enable or Disable any child items depending if current item is checked or not  
    treeview.enable($(".k-item", current), !e.target.checked);
});

您的代码在此修改:http://dojo.telerik.com/@OnaBai/akoYU