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
01
public
partial
class
_Default : System.Web.UI.Page
02
{
03
decimal
grdTotal = 0;
04
protected
void
Page_Load(
object
sender, EventArgs e)
05
{
06
07
}
08
protected
void
GridView1_RowDataBound
09
(
object
sender, GridViewRowEventArgs e)
10
{
11
if
(e.Row.RowType == DataControlRowType.DataRow)
12
{
13
decimal
rowTotal = Convert.ToDecimal
14
(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
01
Public
Partial
Class
_Default
02
Inherits
System.Web.UI.Page
03
Private
grdTotal
As
Decimal
= 0
04
Protected
Sub
Page_Load
05
(
ByVal
sender
As
Object
,
ByVal
e
As
EventArgs)
06
07
End
Sub
08
09
Protected
Sub
GridView1_RowDataBound
10
(
ByVal
sender
As
Object
,
ByVal
e
As
GridViewRowEventArgs)
11
12
If
e.Row.RowType = DataControlRowType.DataRow
Then
13
Dim
rowTotal
As
Decimal
=
14
Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem,
"Amount"
))
15
grdTotal = grdTotal + rowTotal
16
End
If
17
18
If
e.Row.RowType = DataControlRowType.Footer
Then
19
Dim
lbl
As
Label =
DirectCast
(e.Row.FindControl
20
(
"lblTotal"
), Label)
21
lbl.Text = grdTotal.ToString(
"c"
)
22
End
If
23
End
Sub
24
End
Class
Hope this helps
0 comments: