如何限制用户 select 只有一个 child 来自 parent 节点 Kendo 树视图 MVC

How to restrict user to select only one child from parent node Kendo Tree view MVC

我想允许用户 select 只有一个 child 来自 parent 节点,意味着

考虑树视图

P1

P2

P3

这里用户可以select多个child节点但是限制是用户只能select一个child在一个parent节点

我找到了一个 fiddle link 它可以禁用 selection 一旦你 select 一个 child 但是它禁用所有节点,我无法禁用那些最多 parent 的复选框。

here is the link

我将 javascript 更改为

            $("#treeview").kendoTreeView({
                checkboxes: {
                    checkChildren: true,
                  template:"# if(!item.hasChildren){# <input type='checkbox'  name='checkedFiles[#= item.id #]' value='true' />#}#"
                },

        dataSource: [
          { id: 1, text: "My Documents", expanded: true, spriteCssClass: "rootfolder", items: [
            { id: 2, text: "Kendo UI Project", expanded: true, spriteCssClass: "folder", items: [
              { id: 3, text: "about.html", spriteCssClass: "html" },
              { id: 4, text: "index.html", spriteCssClass: "html" },
              { id: 5, text: "logo.png", spriteCssClass: "image" }
            ]
            },
            { id: 6, text: "New Website", expanded: true, spriteCssClass: "folder", items: [
              { id: 7, text: "mockup.jpg", spriteCssClass: "image" },
              { id: 8, text: "Research.pdf", spriteCssClass: "pdf" },
            ] }
          ] },
          { id: 9, text: "Reports", expanded: true, spriteCssClass: "folder", items: [
              { id: 10, text: "February.pdf", spriteCssClass: "pdf" },
              { id: 11, text: "March.pdf", spriteCssClass: "pdf" },
              { id: 12, text: "April.pdf", spriteCssClass: "pdf" }
            ] }
          ]
            });
  
  
  $('#treeview').on('click', 'input:checkbox', function(){
    var checkboxes = $('#treeview input:checkbox');
    var selected = checkboxes.filter(':checked');
    checkboxes.not(selected).prop('disabled', selected.length > 0)
})

我试着找到它最近的('ul').find('li input')然后限制禁用那个ul但是它没有用因为我在jquery中不好.

您可以使用检查事件来完成。在用户选中或取消选中复选框后触发。如果 checkChildren 为真,则在更新所有选中状态后触发该事件。 2014.2.828 之后的内部版本中引入了此事件。

<div id="treeview"></div>
<script>
    $("#treeview").kendoTreeView({
        checkboxes: true,
        dataSource: [
          { text: "foo", items: [
              { text: "bar" }
          ] }
     ],
     check: function(e) {
         console.log("Checking", e.node);
         var checkboxes = $(e.node).parent().find("input:checkbox");
         var selected = checkboxes.filter(':checked');
         checkboxes.not(selected).prop('disabled', selected.length > 0);
     }
});
</script>

可以看到详情here