如何在 Telerik RadTreeView 中设置所选节点和设置所选节点的焦点

本文关键字:节点 设置 焦点 Telerik RadTreeView | 更新日期: 2023-09-27 18:30:52

我正在使用带有ASP .Net C#的Telerik RadTreeView。我能够使用以下代码设置所选节点:

        var node = radTreeViewMenuStructure.Nodes.FindNodeByValue(linkID.ToString());
        if (node != null) // <- equals null when not on the root of the tree
        {
            node.Selected = true;
            node.Expanded = true;
            node.ExpandParentNodes();
            node.Focus();
        }

仅当节点刚好离开根节点且未包含在父节点中时,上面的代码才会设置所选节点。My node = null 选择包含在父节点中的节点的 ID 时。有什么建议吗?

如何在 Telerik RadTreeView 中设置所选节点和设置所选节点的焦点

.FindNodeByValue 在树视图的节点中查找。它不会查看每个子节点。解决方案是递归地走树。这是我最终解决问题的代码:

    private void SelectLink(int linkID, RadTreeNodeCollection rootNodes)
    {
        var node = rootNodes.FindNodeByValue(linkID.ToString());
        if (node != null)
        {
            node.Selected = true;
            node.Expanded = true;
            node.ExpandParentNodes();
            node.Focus();
            ... Do some other work ...
            return;
        }
        // for each node with children  
        foreach (RadTreeNode item in rootNodes.Cast<RadTreeNode>().Where(item => item.Nodes.Count > 0))
        {
            // Recursive call to self to walk the tree
            SelectLink(linkID, item.Nodes);
        }
    }

然后,我只需使用根 RadTreeView 调用该方法:

SelectLink(radTreeViewMenuStructure.Nodes, idToFind);

只需要也调用node.ExpandParentNodes();

你只需要做:radTreeViewMenuStructure.FindNodeByValue()那将把整棵树都烧死。