Progress® Telerik® Reporting R3 2021
IAggregateFunction Interface
Provides custom (user-defined) implementation for aggregate function.
Namespace:
Telerik.Reporting.ExpressionsAssembly: Telerik.Reporting (in Telerik.Reporting.dll)
Syntax
The IAggregateFunction type exposes the following members.
Methods
Name | Description | |
---|---|---|
![]() | Accumulate |
Accumulates the passed values in the aggregate.
|
![]() | GetValue |
Gets the value that the aggregate instance keeps currently accumulated.
|
![]() | Init |
Initializes the aggregate function instance. Implement to set the
aggregate in its initial state ready to accumulate and merge values.
|
![]() | Merge |
Merges another instance of the same aggregate function into the current instance.
Implement this method to allow the reporting engine to merge the two resulting
aggregates coming from two subsets of the aggregated data source rows.
|
Remarks
Implement this interface to provide custom logic when aggregating values
over a set of rows from the data source.
Apply the AggregateFunctionAttribute class to the
aggregate implementation in order to set the name and description
of the aggregate function. If no AggregateFunctionAttribute
is defined, the name of the aggregate function is the name of the actual type
that implements the IAggregateFunction interface.
The word "Aggregate" is trimmed from the type name if it ends with it.
Examples
This example shows how to implement user-defined aggregate.
[AggregateFunction(Description = "Concatenation aggregate. Output: (value1, value2, ...)", Name = "Concatenate")] class ConcatenateAggregate : IAggregateFunction { string result; public void Accumulate(object[] values) { // The aggregate function expects one parameter object value = values[0]; // null values are not aggregated if (null == value) { return; } // The actual accumulation if (this.result.Length > 0) { result += ", "; } this.result += value.ToString(); } public object GetValue() { return string.Format("({0})", this.result); } public void Init() { // Add aggregate function initialization code here if needed this.result = string.Empty; } public void Merge(IAggregateFunction aggregateFunction) { ConcatenateAggregate aggregate = (ConcatenateAggregate)aggregateFunction; if (aggregate.result.Length > 0) { if (this.result.Length > 0) { result += ", "; } this.result += aggregate.result; } } }
Version Information
Supported in: 1.0.1