Skip to main content

TreeList.NodesIterator Property

Gets an object that enables you to perform specific operations on a set of nodes.

Namespace: DevExpress.XtraTreeList

Assembly: DevExpress.XtraTreeList.v23.2.dll

NuGet Packages: DevExpress.Win.Navigation, DevExpress.Win.TreeList

Declaration

[Browsable(false)]
public TreeListNodesIterator NodesIterator { get; }

Property Value

Type Description
TreeListNodesIterator

A TreeListNodesIterator object used to perform predefined operations on a set of nodes.

Remarks

You may often need to traverse through nodes of the Tree List control. This can be used to perform a specific operation on each node, find a node by the specified criterion or calculate the value of some aggregate function over nodes. Since the nodes are represented in a tree-like structure, all nodes can be visited using a recursive function. However, the Tree List control enables you to avoid writing such a function. You can visit all nodes or a predefined set of nodes using the nodes iterator returned by the NodesIterator property.

Example

The following sample code declares a new node operation class. This class can be used to calculate the number of nodes in which the specified field value is greater than the predefined limit. The code also handles the TreeList.GetCustomSummaryValue event. This is used to calculate the number of nodes that have a value greater than 500,000 in the Budget field.

Note: you must set a column’s TreeListColumn.SummaryFooter property to SummaryItemType.Custom to make use of the TreeList.GetCustomSummaryValue event.

using DevExpress.XtraTreeList;

// declaring the custom operation class
public class TreeListExceedLimitOperation : TreeListOperation {
   private string fieldName;
   private int upperLimit;
   private int result;

   public TreeListExceedLimitOperation(string fieldName, int upperLimit) {
      this.fieldName = fieldName;
      this.upperLimit = upperLimit;
      result = 0;
   }
   // incrementing the counter if the node's value exceeds the limit
   public override void Execute(TreeListNode node) {
      int nodeValue = Convert.ToInt32(node[fieldName]);
      if (nodeValue > upperLimit)
         result++;
   }
   public int Result {
      get { return result; }
   }
}

// ...
// using the created class to calculate the number of nodes
// that have a value greater than 500000 in their Budget field
private void treeList1_GetCustomSummaryValue(object sender, GetCustomSummaryValueEventArgs e) {
   if (e.IsSummaryFooter) {
      TreeListExceedLimitOperation operation = 
        new TreeListExceedLimitOperation("Budget", 500000);
      treeList1.NodesIterator.DoOperation(operation);
      e.CustomValue = operation.Result;
   }
}
See Also