Introduction
In this article, I will explain how to implement a grouping and calculate subtotal and a grand total for each group in ASP.Net GridView. To do this I used the RowCreated and RowDatabound events of a GridView. I used an XML file as the data source.
Objective
To understand grouping in an ASP.Net GridView.
Using code
UI
Items are grouped based on the customer name. For each customer, a total has been calculated and at the end a grand total has been calculated.
CODE
The main logic is in the RowCreated and RowDataBound events of the GridView. While iterating through all the rows I am catching the customer id and checking the other rows. When the customer id has been changed I am displaying the subtotal and resetting the subtotal. In the same way I am calculating the grand total. To display in a group format I am adding one row in a GridView once the customer id has been changed. In this row I display the subtotal. To display the heading I am adding a new row to the GridView. Please refer to the attachment to see the complete code.
Design
In design I just bound XML data source attributes. Please refer attachment to see complete code.
<asp:GridView ID="grdViewOrders" CssClass="serh-grid" runat="server" AutoGenerateColumns="False"
TabIndex="1" Width="100%" CellPadding="4" ForeColor="Black" GridLines="Vertical"
OnRowDataBound="grdViewOrders_RowDataBound" OnRowCommand="grdViewOrders_RowCommand"
OnRowCreated="grdViewOrders_RowCreated" BackColor="White" BorderColor="#DEDFDE"
BorderStyle="None" BorderWidth="1px">
<Columns>
<asp:BoundField DataField="OrderID" HeaderText="OrderID" SortExpression="OrderID">
</asp:BoundField>
<asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
<asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" SortExpression="UnitPrice" />
<asp:BoundField DataField="Quantity" HeaderText="Quantity" SortExpression="Quantity" />
<asp:BoundField DataField="Discount" HeaderText="Discount" SortExpression="Discount" />
<asp:BoundField DataField="Amount" HeaderText="Amount" SortExpression="Amount" />
</Columns>
<FooterStyle BackColor="#CCCC99" />
<SelectedRowStyle CssClass="grid-sltrow" />
<HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" BorderStyle="Solid"
BorderWidth="1px" BorderColor="Black" />
</asp:GridView>
Summary
After reading this article, you have learned:
-
How to implement grouping in an ASP.Net GridView
-
How to calculate subtotal and grand total
-
How to select a full row in a GridView
-
Retrieving selected row data