3

In Infragistics UltraTree, how can one select all the nodes under a root?

Cong Ma
  • 10,692
  • 3
  • 31
  • 47
Bote5340
  • 31
  • 1
  • 2

2 Answers2

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