Wednesday, 11 February 2015

Display Grand Total In Gridview Footer On RowDataBound In Asp.Net Using C#.Net

2/11/2015 - By Pranav Singh 4

This article will show you how you Display Grand Total In Gridview Footer On RowDataBound in Asp.Net Using C#.Net. In this we will display to bind value total at run time in asp.net using c#.net.


So for this article first we will create a new asp.net application and add the below code in the page.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Display Grand Total In Gridview Footer On RowDataBound In Asp.Net Using C#.Net
    </title>
</head>
<body>
    <form id="form1" runat="server">
    <table width="100%" cellpadding="4" cellspacing="4">
        <tr>
            <td align="left">
                <asp:GridView ID="GridView1" runat="server" Width="100%"
                    AutoGenerateColumns="False"
                    ShowFooter="True" onrowdatabound="GridView1_RowDataBound">
                    <Columns>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                 Name
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>'></asp:Label>
                            </ItemTemplate>
                            <FooterStyle Font-Bold="True" />
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                 Address
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:Label ID="lblNamAddress" runat="server" Text='<%# Eval("Address") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                 Type
                            </HeaderTemplate>
                            <FooterTemplate>
                               <b> Total :</b>
                            </FooterTemplate>
                            <ItemTemplate>
                                <asp:Label ID="lblUserType" runat="server" Text='<%# Eval("UserType") %>'></asp:Label>
                            </ItemTemplate>
                            <FooterStyle HorizontalAlign="Right" />
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Earning">
                            <FooterTemplate>
                                 <asp:Label ID="lblGrandtotal" runat="server" Text='' Font-Bold="true"></asp:Label>
                            </FooterTemplate>
                            <ItemTemplate>
                                  <asp:Label ID="lbltotal" runat="server" Text='<%# Eval("Earning") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
            </td>
        </tr>
    </table>
    </form>
</body>
</html>

In above code I have use itemtemplate to bind the gridview fields and used label control to display the value using Eval. In HeaderTemplate I have added label control . I will detect this control and assign

Now check the footer of the gridview  in this I have added a label control in this I will display the total.

Now check the code to bind and display no of pages.

using System;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using System.Web.UI.WebControls;
using System.Collections;
namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        DataTable objdt = new DataTable();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GetDistinctValue();
            }
        }
        private void GetDistinctValue()
        {
            SqlConnection con = new SqlConnection(System.Configuration.
ConfigurationManager.ConnectionStrings["con"].ToString());
            try
            {

                string query = "select * from UserDetail;";
                SqlDataAdapter da = new SqlDataAdapter(query, con);
                con.Open();
                da.Fill(objdt);
                con.Close();
                if (objdt.Rows.Count > 0)
                {
                    GridView1.DataSource = objdt;
                    GridView1.DataBind();
                }
            }
            catch
            {
                con.Close();
            }
        }

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.Footer)
            {
                var total = objdt.AsEnumerable().Select(c => new { earning = c.Field<int>("Earning") }).Sum(m => m.earning);
                Label lblTotal = (Label)e.Row.FindControl("lblGrandtotal");
                lblTotal.Text = total.ToString();
            }
        }
    }
}

On above code I have used a function to bind the data. Now I have I have added the control in footer to display the total. Now check the below code to display total value at run time.

                protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.Footer)
            {
                var total = objdt.AsEnumerable().Select(c => new { earning = c.Field<int>("Earning") }).Sum(m => m.earning);
                Label lblTotal = (Label)e.Row.FindControl("lblGrandtotal");
                lblTotal.Text = total.ToString();
            }
        }

In above code I have validated when the footer row is appearing.  After that I have get sum all values by using linq query, and then detected the label control to display the total.

Now we have done run the application to check the output.


DOWNLOAD

About the Author

We are the group of people who are expertise in different Microsoft technology like Asp.Net,MVC,C#.Net,VB.Net,Windows Application,WPF,jQuery,Javascript,HTML. This blog is designed to share the knowledge.

Get Updates

Subscribe to our e-mail newsletter to receive updates.

Share This Post

4 comments:

  1. Replies
    1. Hi The code is 100% working. but still please let me know what error you are getting.

      Delete
    2. Please download the sample and try the why code is written.

      Delete
  2. not working,its is not showing data in foottemplate

    ReplyDelete

Please let me know your view

Free Ebooks


About Us

We are the group of people who are expertise in different Microsoft technology like Asp.Net,MVC,C#.Net,VB.Net,Windows Application,WPF,jQuery,Javascript,HTML. This blog is designed to share the knowledge.

Contact Us

For writing article in this website please send request by your

GMAIL ID: dotnetpools@gmail.com

Bugs and Suggestions

As we all know that this website is for sharing knowledge and providing proper solution. So while reading the article is you find any bug or if you have any suggestion please mail us at contact@aspdotnet-pools.com.

Partners


Global Classified : Connectseekers.com
© 2014 aspdotnet-pools.com Designed by Bloggertheme9.
back to top