.FindNodeByValue is looked up in tree nodes. He does not look at every child node. The solution was to walk tree recursively. Here is my code that finally solved the problem:
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;
}
foreach (RadTreeNode item in rootNodes.Cast<RadTreeNode>().Where(item => item.Nodes.Count > 0))
{
SelectLink(linkID, item.Nodes);
}
}
Then I just call the method with the root of RadTreeView:
SelectLink(radTreeViewMenuStructure.Nodes, idToFind);
source
share