【问题标题】:Kendo TreeView: How to set Intermediate state ProgrammaticallyKendo TreeView:如何以编程方式设置中间状态
【发布时间】:2017-03-11 14:37:02
【问题描述】:

我正在尝试将 Kendo TreeView 与其他控件一起使用。树上的每个叶节点都会打开一个详细信息窗格。当我从详细信息窗格中选择所有元素时,我将该节点的状态设置为 Checked

myTree.dataItem(node).set("checked", true);

当所有项目都未选中时,我将节点的状态设置为未选中。

myTree.dataItem(node).set("checked", false);

但是如果选择了某些项目,我想将节点的状态显示为中间

我该怎么做。我在文档中找不到任何可以帮助我的东西。我发现的最接近的是

myTree.updateIndeterminate()

但是,它没有做这项工作。显然,它根据子节点的状态设置状态。但就我而言,没有子节点。我在这里处理叶节点。我可以将叶节点的状态设置为 Intermediate 吗?如果是,怎么做?

【问题讨论】:

    标签: angularjs kendo-ui kendo-treeview


    【解决方案1】:

    在这方面找不到任何帮助。 最终使用了以下方法

    我现在正在查找与该特定节点关联的复选框,并使用 jQuery 将其设置为 indeterminate 值。

    function SetTreeNodeIndeterminate(nodeId, set) {
      var uid = $("#" + nodeId).parents('li').attr('data-uid');
      var node = myTree.findByUid(uid);
      if (node.length == 0) return;
      var checkBox = $("#_" + uid);
      if (checkBox.length == 0) return;
      checkBox.prop('indeterminate', set);
      updateParentNodeState(node);
    }
    

    以下行确保节点的所有父节点也被标记为不确定

    function updateParentNodeState(node) {
      myTree.updateIndeterminate(node);
      let parentNode = myTree.parent(node);
      if (parentNode.length > 0)
        updateParentNodeState(parentNode);
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-17
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 2013-07-10
      相关资源
      最近更新 更多