Back to Devexpress

TreeList.GetCustomSummaryValue Event

windowsforms-devexpress-dot-xtratreelist-dot-treelist-43a86595.md

latest8.0 KB
Original Source

TreeList.GetCustomSummaryValue Event

Allows you to specify custom summary values when the control is displayed on-screen.

Namespace : DevExpress.XtraTreeList

Assembly : DevExpress.XtraTreeList.v25.2.dll

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

Declaration

csharp
public event GetCustomSummaryValueEventHandler GetCustomSummaryValue
vb
Public Event GetCustomSummaryValue As GetCustomSummaryValueEventHandler

Event Data

The GetCustomSummaryValue event's data class is GetCustomSummaryValueEventArgs. The following properties provide information specific to this event:

PropertyDescription
ColumnObtains the Tree List column used by the summary calculations.
CustomValueGets or sets a value to be displayed within a summary.
IsSummaryFooterGets a value indicating whether the total or group summary value is to be calculated.
NodesGets the nodes collection for which to calculate a custom summary.

Remarks

The control can display the following summaries:

The control supports five predefined aggregate functions: Sum, Min, Max, Count, and Average. If these functions do not meet your needs, you can enable Custom mode and handle the GetCustomSummaryValue event to specify a custom summary value.

The Nodes event argument accesses the processed node collection. To enumerate nodes, you can use either a recursive method or an iterator. See the following help topic for more information: Tree Traversal. Use the CustomValue argument to specify a custom summary value.

The GetCustomSummaryValue event allows you to specify custom summary values when the control is displayed on-screen. To specify custom summary values when the control is printed, use the GetPrintCustomSummaryValue event.

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.

csharp
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;
   }
}
vb
Imports DevExpress.XtraTreeList

' declaring the custom operation class
Public Class TreeListExceedLimitOperation
   Inherits TreeListOperation

   Private FieldName As String
   Private UpperLimit As Integer
   Private _result As Integer

   Public Sub New(ByVal FieldName As String, ByVal UpperLimit As Integer)
      Me.FieldName = FieldName
      Me.UpperLimit = UpperLimit
      _result = 0
   End Sub

   ' incrementing the counter if the node's value exceeds the limit
   Public Overrides Sub Execute(ByVal Node As TreeListNode)
      Dim NodeValue As Integer = Convert.ToInt32(Node(FieldName))
      If NodeValue > UpperLimit Then _result += 1
   End Sub

   Public ReadOnly Property Result() As Integer
      Get
         Return _result
      End Get
   End Property
End Class

' ...
' using the created class to calculate the number of nodes
' that have a value greater than 500000 in their Budget field
Private Sub TreeList1_GetCustomSummaryValue(ByVal sender As Object, _
ByVal e As GetCustomSummaryValueEventArgs) Handles TreeList1.GetCustomSummaryValue
   If (e.IsSummaryFooter) Then
      Dim Operation As New TreeListExceedLimitOperation("Budget", 500000)
      TreeList1.NodesIterator.DoOperation(Operation)
      e.CustomValue = Operation.Result
   End If
End Sub

See Also

GetPrintCustomSummaryValue

SummaryFooter

RowFooterSummary

NodesIterator

TreeList Class

TreeList Members

DevExpress.XtraTreeList Namespace