3

我正在使用带有 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();
        }

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

4

3 回答 3

3

.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);
于 2012-04-11T14:41:37.490 回答
1

你只需要也打电话node.ExpandParentNodes();

于 2012-04-10T22:49:43.267 回答
0

您只需要做: radTreeViewMenuStructure.FindNodeByValue() 将搜索整个树。

于 2013-06-06T19:27:28.647 回答