In Infragistics UltraTree, how can one select all the nodes under a root?
Asked
Active
Viewed 3,940 times
2 Answers
3
As far as I know, there is not method to select all nodes. But you can build your own like this:
Queue<UltraTreeNode> queue = new Queue<UltraTreeNode>(ultraTree1.Nodes);
while (queue.Count > 0)
{
UltraTreeNode node = queue.Dequeue();
foreach(UltraTreeNode child in node.Nodes)
queue.Enqueue(child);
node.Selected = true;
}

Hinek
- 9,519
- 12
- 52
- 74
0
One possible modification for this is to use the yield return statement to provide all the tree nodes as a enumerable collection:
private IEnumerable<UltraTreeNode> AllTreeNodes()
{
Queue<UltraTreeNode> queue = new Queue<UltraTreeNode>(ultraTree1.Nodes.OfType<UltraTreeNode>());
while (queue.Count > 0)
{
UltraTreeNode node = queue.Dequeue();
foreach (UltraTreeNode child in node.Nodes)
queue.Enqueue(child);
yield return node;
}
}
Then you can run through each item and do whatever processing you want (be it mark them selected or something else):
foreach (var node in AllTreeNodes())
{
// Take whatever action is needed
//
node.Selected = true;
}

Sam Storie
- 4,444
- 4
- 48
- 74