Kendo TreeView:如何以编程方式设置中间状态

时间:2017-03-11 14:37:03

标签: angularjs kendo-ui kendo-treeview

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

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

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

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

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

我该怎么做。我无法在文档中找到任何可以帮助我的内容。我找到的最接近的是

myTree.updateIndeterminate()
然而,它没有做好这项工作。显然,它根据子节点的状态设置状态。但就我而言,没有子节点。我在这里处理叶子节点。我可以将叶节点的状态设置为中级吗?如果有,怎么样?

1 个答案:

答案 0 :(得分:0)

无法找到任何帮助。 使用以下方法结束

我现在找到与该特定节点关联的复选框,并使用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);
}