Running Total In Gridview Footer in ASP.NET C# VB.NET
In this example i am going to demonstrate how to display running
total in footer row or footer template of GridView in ASP.NET using C#
and VB.NET. This method works with paging enabled gridview as well.
For demo purpose gridview is populated using sqldatasource having table with columns ID ,Name,Amount
I m showing total of amount column is gridview footer. for this we need to sum the the column in RowDataBound Even of Gridiew
Html source of gridview is
Now we need to write code for summing the column in RowdataBound Even of GridView
Hope this helps
For demo purpose gridview is populated using sqldatasource having table with columns ID ,Name,Amount
I m showing total of amount column is gridview footer. for this we need to sum the the column in RowDataBound Even of Gridiew
Html source of gridview is
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1" OnRowDataBound="GridView1_RowDataBound" ShowFooter="True" AllowPaging="True" PageSize="5" BackColor="#ffffff" BorderColor="AliceBlue" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" FooterStyle-BackColor="#da821e" FooterStyle-ForeColor="#ffffff" RowStyle-BackColor="#003366" RowStyle-ForeColor="#ffffff" AlternatingRowStyle-BackColor="#da821e"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" /> <asp:BoundField DataField="Name" HeaderText="Name" InsertVisible="False" ReadOnly="True" SortExpression="Name" FooterText="Total"/> <asp:TemplateField HeaderText="Amount"> <ItemTemplate> <asp:Label ID="lblAmount" runat="server" Text='<%# "$"+Eval("Amount").ToString()%>'> </asp:Label> </ItemTemplate> <FooterTemplate> <asp:Label ID="lblTotal" runat="server"></asp:Label> </FooterTemplate> </asp:TemplateField> </Columns> <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" /> <HeaderStyle BackColor="#da821e" Font-Bold="True" ForeColor="White" /> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [ID], [Name], [Amount] FROM [Expenses]"> </asp:SqlDataSource>
C# code behind
01public partial class _Default : System.Web.UI.Page 02{03 decimal grdTotal = 0;04 protected void Page_Load(object sender, EventArgs e)05 {06 07 }08protected void GridView1_RowDataBound09 (object sender, GridViewRowEventArgs e)10{11 if (e.Row.RowType == DataControlRowType.DataRow)12 {13 decimal rowTotal = Convert.ToDecimal14 (DataBinder.Eval(e.Row.DataItem, "Amount"));15 grdTotal = grdTotal + rowTotal;16 }17 if (e.Row.RowType == DataControlRowType.Footer)18 {19 Label lbl = (Label)e.Row.FindControl("lblTotal");20 lbl.Text = grdTotal.ToString("c");21 }22}23}
VB.NET code behind
01Public Partial Class _Default02 Inherits System.Web.UI.Page03 Private grdTotal As Decimal = 004 Protected Sub Page_Load05 (ByVal sender As Object, ByVal e As EventArgs)06 07End Sub08 09Protected Sub GridView1_RowDataBound10(ByVal sender As Object, ByVal e As GridViewRowEventArgs)11 12If e.Row.RowType = DataControlRowType.DataRow Then13Dim rowTotal As Decimal = 14Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "Amount"))15grdTotal = grdTotal + rowTotal16End If17 18If e.Row.RowType = DataControlRowType.Footer Then19Dim lbl As Label = DirectCast(e.Row.FindControl20 ("lblTotal"), Label)21lbl.Text = grdTotal.ToString("c")22End If23End Sub24End ClassHope this helps
.png)

0 comments: