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
 
    