Displaying Total in Footer of GridView and also Add Sum of columns(row vise) in last Column

前端 未结 4 1649
离开以前
离开以前 2020-12-07 01:12

In my Asp.net App, i have a GridView and i generate the data of column[6] by myself using code behind.

by looking at the code below, i have

相关标签:
4条回答
  • 2020-12-07 01:42

    Sample Code: To set Footer text programatically

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
          if (e.Row.RowType == DataControlRowType.Footer)
          {
             Label lbl = (Label)e.Row.FindControl("lblTotal");
             lbl.Text = grdTotal.ToString("c");
          }
       }
    

    UPDATED CODE:

      decimal sumFooterValue = 0;
      protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
    
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
             string sponsorBonus = ((Label)e.Row.FindControl("Label2")).Text;
             string pairingBonus = ((Label)e.Row.FindControl("Label3")).Text;
             string staticBonus = ((Label)e.Row.FindControl("Label4")).Text;
             string leftBonus = ((Label)e.Row.FindControl("Label5")).Text;
             string rightBonus = ((Label)e.Row.FindControl("Label6")).Text;
             decimal totalvalue = Convert.ToDecimal(sponsorBonus) + Convert.ToDecimal(pairingBonus) + Convert.ToDecimal(staticBonus) + Convert.ToDecimal(leftBonus) + Convert.ToDecimal(rightBonus);
             e.Row.Cells[6].Text = totalvalue.ToString();
             sumFooterValue += totalvalue; 
            }
    
        if (e.Row.RowType == DataControlRowType.Footer)
            {
               Label lbl = (Label)e.Row.FindControl("lblTotal");
               lbl.Text = sumFooterValue.ToString();
            }
    
       }
    

    In .aspx Page

     <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" 
            AutoGenerateColumns="False" DataKeyNames="ID" CellPadding="4" 
            ForeColor="#333333" GridLines="None" ShowFooter="True" 
                    onrowdatabound="GridView1_RowDataBound">
            <RowStyle BackColor="#EFF3FB" />
            <Columns>
                <asp:TemplateField HeaderText="Report Date" SortExpression="reportDate">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("reportDate") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" 
                            Text='<%# Bind("reportDate", "{0:dd MMMM yyyy}") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Sponsor Bonus" SortExpression="sponsorBonus">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("sponsorBonus") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label2" runat="server" 
                            Text='<%# Bind("sponsorBonus", "{0:0.00}") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Pairing Bonus" SortExpression="pairingBonus">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("pairingBonus") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label3" runat="server" 
                            Text='<%# Bind("pairingBonus", "{0:c}") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Static Bonus" SortExpression="staticBonus">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("staticBonus") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label4" runat="server" Text='<%# Bind("staticBonus") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Left Bonus" SortExpression="leftBonus">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("leftBonus") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label5" runat="server" Text='<%# Bind("leftBonus") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Right Bonus" SortExpression="rightBonus">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("rightBonus") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label6" runat="server" Text='<%# Bind("rightBonus") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Total" SortExpression="total">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
                    </EditItemTemplate>
                    <FooterTemplate>
                        <asp:Label ID="lbltotal" runat="server" Text="Label"></asp:Label>
                    </FooterTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label7" runat="server"></asp:Label>
                    </ItemTemplate>
                    <ItemStyle Width="100px" />
    
                </asp:TemplateField>
            </Columns>
            <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <EditRowStyle BackColor="#2461BF" />
            <AlternatingRowStyle BackColor="White" />            
        </asp:GridView>
    

    My Blog - Asp.net Gridview Article

    0 讨论(0)
  • 2020-12-07 01:54
    protected void gvBill_RowDataBound(object sender, GridViewRowEventArgs e)
        {
    
            if (e.Row.RowType == DataControlRowType.DataRow)
    
                Total += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "InvMstAmount"));
            else if (e.Row.RowType == DataControlRowType.Footer)
    
                e.Row.Cells[7].Text = String.Format("{0:0}", "<b>" + Total + "</b>");
        }
    

    0 讨论(0)
  • 2020-12-07 01:59
         <asp:TemplateField HeaderText="ExEmp" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"
                                                                        FooterStyle-BackColor="BurlyWood" FooterStyle-HorizontalAlign="Center">
                                                                        <ItemTemplate>
                                                                            <asp:TextBox ID="txtNoOfExEmp" runat="server" CssClass="form-control input-sm m-bot15"
                                                                                Font-Bold="true" onkeypress="return isNumberKey(event)" Text='<%#Bind("ExEmp") %>'></asp:TextBox>
                                                                        </ItemTemplate>
                                                                        <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                                                                        <ItemStyle HorizontalAlign="Center" Width="50px" />
                                                                        <FooterTemplate>
                                                                            <asp:Label ID="lblTotNoOfExEmp" Font-Bold="true" runat="server" Text="0" CssClass="form-label"></asp:Label>
                                                                        </FooterTemplate>
                                                                    </asp:TemplateField>
    
    
     private void TotalExEmpOFMonth()
        {
            Label lbl_TotNoOfExEmp = (Label)GrdPFRecord.FooterRow.FindControl("lblTotNoOfExEmp");
            /*Sum of the  Total Amount Of month*/
            foreach (GridViewRow gvr in GrdPFRecord.Rows)
            {
                TextBox txt_NoOfExEmp = (TextBox)gvr.FindControl("txtNoOfExEmp");
                lbl_TotNoOfExEmp.Text = (Convert.ToDouble(txt_NoOfExEmp.Text) + Convert.ToDouble(lbl_TotNoOfExEmp.Text)).ToString();
                lbl_TotNoOfExEmp.Text = string.Format("{0:F0}", Decimal.Parse(lbl_TotNoOfExEmp.Text));
    
    
    
            }
        }
    
    0 讨论(0)
  • 2020-12-07 02:00

    This can be achieved through LINQ with grouping, here a list of items pointed as a data source to the actual grid view. Sample pseudo code which could help coding the actual.

    var tabelDetails =(from li in dc.My_table
        join m in dc.Table_One on li.ID equals m.ID
        join c in dc.Table_two on li.OtherID equals c.ID
        where //Condition
    group new { m, li, c } by new
    {
        m.ID,
        m.Name
    } into g
    select new
    {
        g.Key.ID,
        Name = g.Key.FullName,
        sponsorBonus= g.Where(s => s.c.Name == "sponsorBonus").Count(),
        pairingBonus = g.Where(s => s.c.Name == "pairingBonus").Count(),
        staticBonus = g.Where(s => s.c.Name == "staticBonus").Count(),   
        leftBonus = g.Where(s => s.c.Name == "leftBonus").Count(),  
        rightBonus = g.Where(s => s.c.Name == "rightBonus").Count(),  
        Total = g.Count()  //Row wise Total
    }).OrderBy(t => t.Name).ToList();
    
    tabelDetails.Insert(tabelDetails.Count(), new  //This data will be the last row of the grid
    {
        Name = "Total",  //Column wise total
        sponsorBonus = tabelDetails.Sum(s => s.sponsorBonus),
        pairingBonus = tabelDetails.Sum(s => s.pairingBonus),
        staticBonus = tabelDetails.Sum(s => s.staticBonus),
        leftBonus = tabelDetails.Sum(s => s.leftBonus),
        rightBonus = tabelDetails.Sum(s => s.rightBonus ),
        Total = tabelDetails.Sum(s => s.Total)
    });
    
    0 讨论(0)
提交回复
热议问题