Articles in this section
Category / Section

How to add summary row in grid databound grid?

1 min read

The GridDataBoundGrid doesn’t have support for Summary row. This can be achieved by using GridSummaryRow class. And wire the griddataboundgrid to Summary Row.

C#

//create a summary row...
                sumRow = new GridSummaryRow();
//define the summary type for each column
                object[] summaryTypes = new object[this.gridDataBoundGrid1.Model.ColCount];
                for (int i = 0; i < this.gridDataBoundGrid1.Model.ColCount; i++)
                 {
                    if (i == 2 || i == 3 || i == 5) //sum these
                                {
                                  summaryTypes[i] = GridSummaryRow.SummaryType.Sum;
                            }
                   else if (i == 6) //do max
                                {
                                  summaryTypes[i] = new GridSummaryRow.CustomSummaryCalculation(calc_Max);
                                }
                else if (i == 7) //do min
                                {
                                  summaryTypes[i] = new GridSummaryRow.CustomSummaryCalculation(calc_Min);
                                }
                else //no summary
                                {
                                   summaryTypes[i] = GridSummaryRow.SummaryType.None;
                                }
                }
 
this.gridDataBoundGrid1.Binder.InternalColumns(0).StyleInfo.BackColor = SystemColors.Control;
this.gridDataBoundGrid1.Binder.InternalColumns(2).StyleInfo.BackColor = SystemColors.Control;
this.gridDataBoundGrid1.Binder.InternalColumns(5).StyleInfo.BackColor = SystemColors.Control;
 
//two ways to wire the summary row
 
//1) use default table style
//sumRow.WireSummaryRow(this.gridDataBoundGrid1, summaryTypes);
 
//2) or set each column style somehow....
GridStyleInfo[] styles = new GridStyleInfo[this.gridDataBoundGrid1.Model.ColCount];
    for (int i = 0; i < this.gridDataBoundGrid1.Model.ColCount; i++)
                {
                                styles[i] = new GridStyleInfo((GridStyleInfoStore)(this.gridDataBoundGrid1.Binder.InternalColumns(i).StyleInfo.Store.Clone()));
                                styles[i].Font.Bold = true;
 
                }
   styles[0].Text = "Total";
 
   sumRow.WireSummaryRow(this.gridDataBoundGrid1, summaryTypes, styles);
 

 

VB

'create a summary row...
 sumRow = New GridSummaryRow()
'define the summary type for each column
 Dim summaryTypes(Me.gridDataBoundGrid1.Model.ColCount - 1) As Object
For i As Integer = 0 To Me.gridDataBoundGrid1.Model.ColCount - 1
                If i= 2 OrElse i = 3 OrElse i = 5 Then 'sum these
                                summaryTypes(i) = GridSummaryRow.SummaryType.Sum
                ElseIf i = 6 Then 'do max
                                summaryTypes(i) = New GridSummaryRow.CustomSummaryCalculation(AddressOf calc_Max)
                ElseIf i = 7 Then 'do min
                                summaryTypes(i) = New GridSummaryRow.CustomSummaryCalculation(AddressOf calc_Min)
                Else 'no summary
                                summaryTypes(i) = GridSummaryRow.SummaryType.None
End If
Next i
 
Me.gridDataBoundGrid1.Binder.InternalColumns(0).StyleInfo.BackColor = SystemColors.Control
Me.gridDataBoundGrid1.Binder.InternalColumns(2).StyleInfo.BackColor = SystemColors.Control
Me.gridDataBoundGrid1.Binder.InternalColumns(5).StyleInfo.BackColor = SystemColors.Control
 
'two ways to wire the summary row
 
1) use default table style
'sumRow.WireSummaryRow(this.gridDataBoundGrid1, summaryTypes);
 
'2) or set each column style somehow....
 Dim styles(Me.gridDataBoundGrid1.Model.ColCount - 1) As GridStyleInfo
 For i As Integer = 0 To Me.gridDataBoundGrid1.Model.ColCount - 1
                styles(i) = New GridStyleInfo(CType(Me.gridDataBoundGrid1.Binder.InternalColumns(i).StyleInfo.Store.Clone(), GridStyleInfoStore))
                styles(i).Font.Bold = True
 
                Next i
styles(0).Text = "Total"
 
sumRow.WireSummaryRow(Me.gridDataBoundGrid1, summaryTypes, styles)
 
'this.gridDataBoundGrid1.EnableAddNew = false;
 
'padd the grid's client area with empty rows
Me.gridDataBoundGrid1.Model.Options.DisplayEmptyRows = True

 

Screenshot

Sample Links

C#: AddSummary_CS

VB: AddSummary_VB

 

 

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