如何在Telerik RadTreeView中设置SelectedNode并设置所选节点的焦点?

时间:2012-04-10 22:34:32

标签: c# asp.net .net telerik radtreeview

我正在使用带有ASP .Net C#的Telerik RadTreeView。我可以使用以下代码设置Selected Node:

        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时,我的node = null。有什么建议吗?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

您只需拨打node.ExpandParentNodes();

即可

答案 2 :(得分:0)

你只需要这样做: radTreeView MenuStructure.FindByValue() 将搜索整棵树。