locked
Gridview display total in footer RRS feed

  • Question

  • User1821839919 posted

    Hi,i need some helps,any idea on display footer in gridview?

    Below are my codes :

    protected void FillRequestGrid()
        {
            if (Session["loggedUserID"] == null && Session["loggedRoleID"] == null)
            {
                Response.Redirect("Login.aspx");
            }
            else
            {
                int loggedUserID = Convert.ToInt32(Session["loggedUserID"]);
                List<BOL.UserInfo> userslist = new UserInfos().List();
                BOL.UserInfo loggeduser = userslist.Where(x => x.UserID == loggedUserID).FirstOrDefault();
    
                List<BOL.HomeAnnouncement> train_L = new Homes().ATTENDANCE(loggeduser.SUBSIDIARY_CD, "7.00 am - 7.00 pm");
    
                GrdUsers.DataSource = train_L;
                GrdUsers.DataBind();
            }
            if (GrdUsers.Rows.Count > 0)
            {
                GrdUsers.HeaderRow.TableSection = TableRowSection.TableHeader;
            }
        }
    
        protected void GrdUsers_PageIndexChanging1(object sender, GridViewPageEventArgs e)
        {
            GrdUsers.PageIndex = e.NewPageIndex;
            FillRequestGrid();
        }
        <asp:GridView ID="GrdUsers" runat="server" CssClass="table table-striped table-bordered table-hover" EmptyDataText="No Records Found" DataKeyNames="Description"
            AllowPaging="true" AutoGenerateColumns="false" AutoGenerateDeleteButton="false" RowStyle-HorizontalAlign="Left" OnPageIndexChanging="GrdUsers_PageIndexChanging1"
            HeaderStyle-HorizontalAlign="Center" GridLines="None" BorderWidth="2px" EditRowStyle-BorderColor="#000000" EmptyDataRowStyle-BorderStyle="Groove" PageSize="10"
            Width="70%" RowStyle-CssClass="gradeX" AlternatingRowStyle-CssClass="gradeA">
            <Columns>
                <asp:TemplateField HeaderText="Area" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="15%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "Description")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Total Employee" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="10%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: bold"><%#DataBinder.Eval(Container.DataItem, "a_1")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Present" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="7%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "a_2")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Absent" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="7%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "status")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                 <asp:TemplateField HeaderText="Percent of employee present(%)" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="15%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "PURPOSE")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <PagerStyle HorizontalAlign="Right" CssClass="pagination-ys" />
        </asp:GridView>


    My current data display:

    data

    https://postimg.org/image/frkgaccgx/

    Friday, October 14, 2016 8:40 AM

Answers

  • User283571144 posted

    Hi kiang_yit,

    Gridview display total in footer

    According to your description, I suggest you could set gridview's showfooter's value to true, firstly.

    Then you could use select method and sum method to get the total result in each column.

    More details, you could refer to follow codes and image:

     <div>
    <asp:GridView ID="GrdUsers" runat="server" CssClass="table table-striped table-bordered table-hover" EmptyDataText="No Records Found" DataKeyNames="Description"
            AllowPaging="true" AutoGenerateColumns="false" AutoGenerateDeleteButton="false" RowStyle-HorizontalAlign="Left" OnPageIndexChanging="GrdUsers_PageIndexChanging1"
            HeaderStyle-HorizontalAlign="Center" GridLines="None" BorderWidth="2px" EditRowStyle-BorderColor="#000000" EmptyDataRowStyle-BorderStyle="Groove" PageSize="10"
            Width="70%" ShowFooter="true" RowStyle-CssClass="gradeX" AlternatingRowStyle-CssClass="gradeA">
            <Columns>
                <asp:TemplateField HeaderText="Area" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="15%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "Description")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Total Employee" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="10%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: bold"><%#DataBinder.Eval(Container.DataItem, "a_1")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Present" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="7%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "a_2")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Absent" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="7%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "status")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                 <asp:TemplateField HeaderText="Percent of employee present(%)" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="15%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "PURPOSE")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <PagerStyle HorizontalAlign="Right" CssClass="pagination-ys" />
        </asp:GridView>
        </div>

    Code-behind:

    public partial class FooterInGridview : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if ( ! IsPostBack)
                {
                    FillRequestGrid();
                }
            }
    
            protected void FillRequestGrid()
            {
                List<HomeAnnouncement> l1 = new List<HomeAnnouncement>();
                HomeAnnouncement h1 = new HomeAnnouncement();
                h1.a_1 = 2;
                h1.a_1 = 1;
                h1.Description = "ENG";
                h1.status = 1;
                h1.PURPOSE = 92.9;
                HomeAnnouncement h2 = new HomeAnnouncement();
                h2.a_1 = 3;
                h2.a_1 = 4;
                h2.Description = "PACK";
                h2.status = 9;
                h2.PURPOSE = 91.7;
                l1.Add(h1);
                l1.Add(h2);
    // show each lines total result: GrdUsers.Columns[0].FooterText = "Total"; GrdUsers.Columns[1].FooterText = l1.Select(x =>x.a_1).Sum().ToString(); GrdUsers.Columns[2].FooterText = l1.Select(x => x.a_2).Sum().ToString(); GrdUsers.Columns[3].FooterText = l1.Select(x => x.status).Sum().ToString(); GrdUsers.Columns[4].FooterText = l1.Select(x => x.PURPOSE).Sum().ToString(); GrdUsers.DataSource = l1; GrdUsers.DataBind(); } protected void GrdUsers_PageIndexChanging1(object sender, GridViewPageEventArgs e) { GrdUsers.PageIndex = e.NewPageIndex; FillRequestGrid(); } } internal class HomeAnnouncement { public string Description { get; set; } public int a_1 { get; set; } public int a_2 { get; set; } public int status { get; set; } public double PURPOSE { get; set; } }

    Result:

    Best Regards,

    Brando

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Saturday, October 15, 2016 10:55 AM

All replies

  • User177399542 posted

    Hi Please check this: Display sum of columns total in gridview footer

    Friday, October 14, 2016 11:08 AM
  • User283571144 posted

    Hi kiang_yit,

    Gridview display total in footer

    According to your description, I suggest you could set gridview's showfooter's value to true, firstly.

    Then you could use select method and sum method to get the total result in each column.

    More details, you could refer to follow codes and image:

     <div>
    <asp:GridView ID="GrdUsers" runat="server" CssClass="table table-striped table-bordered table-hover" EmptyDataText="No Records Found" DataKeyNames="Description"
            AllowPaging="true" AutoGenerateColumns="false" AutoGenerateDeleteButton="false" RowStyle-HorizontalAlign="Left" OnPageIndexChanging="GrdUsers_PageIndexChanging1"
            HeaderStyle-HorizontalAlign="Center" GridLines="None" BorderWidth="2px" EditRowStyle-BorderColor="#000000" EmptyDataRowStyle-BorderStyle="Groove" PageSize="10"
            Width="70%" ShowFooter="true" RowStyle-CssClass="gradeX" AlternatingRowStyle-CssClass="gradeA">
            <Columns>
                <asp:TemplateField HeaderText="Area" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="15%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "Description")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Total Employee" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="10%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: bold"><%#DataBinder.Eval(Container.DataItem, "a_1")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Present" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="7%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "a_2")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Absent" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="7%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "status")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
                 <asp:TemplateField HeaderText="Percent of employee present(%)" HeaderStyle-BackColor="#0033cc" HeaderStyle-ForeColor="White" ItemStyle-Width="15%">
                    <ItemTemplate>
                        <label style="color: black; font-weight: 100"><%#DataBinder.Eval(Container.DataItem, "PURPOSE")%></label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <PagerStyle HorizontalAlign="Right" CssClass="pagination-ys" />
        </asp:GridView>
        </div>

    Code-behind:

    public partial class FooterInGridview : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if ( ! IsPostBack)
                {
                    FillRequestGrid();
                }
            }
    
            protected void FillRequestGrid()
            {
                List<HomeAnnouncement> l1 = new List<HomeAnnouncement>();
                HomeAnnouncement h1 = new HomeAnnouncement();
                h1.a_1 = 2;
                h1.a_1 = 1;
                h1.Description = "ENG";
                h1.status = 1;
                h1.PURPOSE = 92.9;
                HomeAnnouncement h2 = new HomeAnnouncement();
                h2.a_1 = 3;
                h2.a_1 = 4;
                h2.Description = "PACK";
                h2.status = 9;
                h2.PURPOSE = 91.7;
                l1.Add(h1);
                l1.Add(h2);
    // show each lines total result: GrdUsers.Columns[0].FooterText = "Total"; GrdUsers.Columns[1].FooterText = l1.Select(x =>x.a_1).Sum().ToString(); GrdUsers.Columns[2].FooterText = l1.Select(x => x.a_2).Sum().ToString(); GrdUsers.Columns[3].FooterText = l1.Select(x => x.status).Sum().ToString(); GrdUsers.Columns[4].FooterText = l1.Select(x => x.PURPOSE).Sum().ToString(); GrdUsers.DataSource = l1; GrdUsers.DataBind(); } protected void GrdUsers_PageIndexChanging1(object sender, GridViewPageEventArgs e) { GrdUsers.PageIndex = e.NewPageIndex; FillRequestGrid(); } } internal class HomeAnnouncement { public string Description { get; set; } public int a_1 { get; set; } public int a_2 { get; set; } public int status { get; set; } public double PURPOSE { get; set; } }

    Result:

    Best Regards,

    Brando

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Saturday, October 15, 2016 10:55 AM