Articles in this section
Category / Section

How to calculate the summary value based on other column summary value in WinForms DataGrid (SfDataGrid)?

2 mins read

Summaries

By default, the summary value is calculated based on the corresponding summary column in the SfDataGrid.  The value of a summary column can be calculated based on other summary column values by changing the display text in the SfDataGrid.DrawCell event with required value. The original summary value of a summary column can be retrieved by using the GetSummaryDisplayText method in SummaryCreator.

The following code example shows how to change the summary column value when ShowInSummaryRow is false.

C#

private void SfDataGrid_DrawCell(object sender, DrawCellEventArgs e)
{
    if ((e.DataRow as DataRowBase).RowType == RowType.TableSummaryRow)
    {
        if (e.Column.MappingName == "Q3")
        {
            float summaryColumnValue1 = 0;
            float summaryColumnValue2 = 0;
            float.TryParse(SummaryCreator.GetSummaryDisplayText((e.DataRow.RowData as SummaryRecordEntry), "Q1", sfDataGrid.View), out summaryColumnValue1);
            float.TryParse(SummaryCreator.GetSummaryDisplayText((e.DataRow.RowData as SummaryRecordEntry), "Q2", sfDataGrid.View), out summaryColumnValue2);
            e.DisplayText = (summaryColumnValue1 / summaryColumnValue2).ToString();
        }
    }
}

VB

Private Sub SfDataGrid_DrawCell(ByVal sender As Object, ByVal e As DrawCellEventArgs)
    If (TryCast(e.DataRow, DataRowBase)).RowType = RowType.TableSummaryRow Then
        If e.Column.MappingName = "Q3" Then
            Dim summaryColumnValue1 As Single = 0
            Dim summaryColumnValue2 As Single = 0
            Single.TryParse(SummaryCreator.GetSummaryDisplayText((TryCast(e.DataRow.RowData, SummaryRecordEntry)), "Q1", sfDataGrid.View), summaryColumnValue1)
            Single.TryParse(SummaryCreator.GetSummaryDisplayText((TryCast(e.DataRow.RowData, SummaryRecordEntry)), "Q2", sfDataGrid.View), summaryColumnValue2)
            e.DisplayText = (summaryColumnValue1 / summaryColumnValue2).ToString()
        End If
    End If
End Sub

 

Shows the summary column value in SfDataGrid for WinForms

Samples:

C#: Summary_CS

VB: Summary_VB

The following code example shows how to change the summary column value when ShowInSummaryRow is true.

C#

private void SfDataGrid_DrawCell(object sender, DrawCellEventArgs e)
{
    if ((e.DataRow as DataRowBase).RowType == RowType.TableSummaryCoveredRow)
    {
        float summaryColumnValue1 = 0;
        float summaryColumnValue2 = 0;
        float.TryParse(SummaryCreator.GetSummaryDisplayText((e.DataRow.RowData as SummaryRecordEntry), "Q1", sfDataGrid.View), out summaryColumnValue1);
        float.TryParse(SummaryCreator.GetSummaryDisplayText((e.DataRow.RowData as SummaryRecordEntry), "Q2", sfDataGrid.View), out summaryColumnValue2);
        e.DisplayText = e.DisplayText + "  : Ratio  " + (summaryColumnValue1 / summaryColumnValue2).ToString();
    }
}

VB

Private Sub SfDataGrid_DrawCell(ByVal sender As Object, ByVal e As DrawCellEventArgs) 
    If (TryCast(e.DataRow, DataRowBase)).RowType = RowType.TableSummaryCoveredRow Then 
       Dim summaryColumnValue1 As Single = 0 
       Dim summaryColumnValue2 As Single = 0 
       Single.TryParse(SummaryCreator.GetSummaryDisplayText((TryCast(e.DataRow.RowData, SummaryRecordEntry)), "Q1", sfDataGrid.View), summaryColumnValue1) 
       Single.TryParse(SummaryCreator.GetSummaryDisplayText((TryCast(e.DataRow.RowData, SummaryRecordEntry)), "Q2", sfDataGrid.View), summaryColumnValue2) 
       e.DisplayText = e.DisplayText & "  : Ratio  " & (summaryColumnValue1 / summaryColumnValue2).ToString()               
    End If 
End Sub 

 

Shows the summary column value in SfDataGrid for WinForms

Samples:

C#: Summary_CS

VB: Summary_VB

Reference link: https://help.syncfusion.com/windowsforms/datagrid/summaries

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please sign in to leave a comment
Access denied
Access denied