Articles in this section
Category / Section

How to add summary row in grid databound grid?

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)
Access denied
Access denied