GrapeCity MultiRow Windows Forms Documentation
ICalculation Interface
Members  Example 


Defines an interface that calculates the specified cell value.
Syntax
Public Interface ICalculation 
Dim instance As ICalculation
public interface ICalculation 
Example
The following code example shows how to customize the summary cell's calculation logic. This code example is part of a larger example provided for the SummaryCell class.
private SummaryCell CreateCustomSummaryCell()
        {
            SummaryCell summaryCell = new SummaryCell();
            // Custom calculation logic.
            summaryCell.Calculation = new PercentageCalculation();
            summaryCell.Style.Format = "#0.00%";
            summaryCell.Style.BackColor = Color.Wheat;
            return summaryCell;
        }

        class PercentageCalculation : ICalculation
        {
            public object Calculate(CalculationContext context)
            {
                // calculate the percentage based on current section's subtotal in total.
                object subTotalValue = context.GcMultiRow[context.SectionIndex, "SubTotal"].Value;
                object totalValue = context.GcMultiRow.ColumnFooters[0]["Total"].Value;

                if (object.Equals(totalValue, 0m))
                {
                    // context.ErrorInfo = "Total is 0.";
                    return "Total is 0";
                }

                return (decimal)subTotalValue / (decimal)totalValue;
            }

            public object Clone()
            {
                // If a new property is in the calculation, clone the property with this method.
                return new PercentageCalculation();
            }
        }
Private Function CreateCustomSummaryCell() As SummaryCell
        Dim summaryCell As New SummaryCell()
        ' Custom calculation logic.
        summaryCell.Calculation = New PercentageCalculation()
        summaryCell.Style.Format = "#0.00%"
        summaryCell.Style.BackColor = Color.Wheat
        Return summaryCell
    End Function

    Private Class PercentageCalculation
        Implements ICalculation
        Public Function Calculate(ByVal context As CalculationContext) As Object Implements ICalculation.Calculate
            ' calculate the percentage based on current section's subtotal in total.
            Dim subTotalValue As Object = context.GcMultiRow(context.SectionIndex, "SubTotal").Value
            Dim totalValue As Object = context.GcMultiRow.ColumnFooters(0)("Total").Value

            If Object.Equals(totalValue, 0D) Then
                ' context.ErrorInfo = "Total is 0.";
                Return "Total is 0"
            End If

            Return DirectCast(subTotalValue, Decimal) / DirectCast(totalValue, Decimal)
        End Function

        Public Function Clone() As Object Implements ICloneable.Clone
            ' If a new property is in the calculation, make sure the property is cloned in this method.
            Return New PercentageCalculation()
        End Function
    End Class
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

ICalculation Members
GrapeCity.Win.MultiRow Namespace
MathStatistics Class
Expression Class
SummaryCell Class

 

 


Copyright © GrapeCity, inc. All rights reserved.