2016-10-14 2 views
-1

Brauchen Sie Hilfe auf dem Display Summe auf Fußzeile einer Tabelle, ich benutze generische Liste nicht datatable, wenn ich google die Lösung kann ich nur die Anleitung auf Datentabelle aber keine generische Liste.Anzeige Gridview Fußzeile

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(); 

    } 
} 

<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> 

Erwartete diese Ausgabe:

enter image description here

Meine aktuellen Ausgangsdaten ist ohne die Fußzeile.

+0

seine schlechte Idee, die Sitzung für die Prüfung zu verwenden, wenn der Benutzer angemeldet ist. – Aristos

+0

@Aristos warum Session ist für dann? – Imad

+0

@Imad Um einige Daten für den Benutzer zu speichern, benötigen Sie jedoch die Anmeldeinformationen, um zu prüfen, ob der Benutzer angemeldet ist. – Aristos

Antwort

0

Fußzeilenvorlage verwenden.

<asp:TemplateField HeaderText="Total Employee"> 
<ItemTemplate> 
<asp:Label ID="lblamount" runat="server" Text='<%# Eval("Total Employee") %>'/> 
</ItemTemplate> 
<FooterTemplate> 
<asp:Label ID="lblTotalEmployee" runat="server" /> 
</FooterTemplate> 
</asp:TemplateField> 

und Gridview RowDataBound-Ereignis hinzufügen, um die Summe aller Mitarbeiter zu berechnen.

int total = 0; 
protected void gv_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
if(e.Row.RowType==DataControlRowType.DataRow) 
{ 
total += Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "Total Employee")); 
} 
if(e.Row.RowType==DataControlRowType.Footer) 
{ 
Label lblTotal= (Label)e.Row.FindControl("lblTotalEmployee"); 
lblTotal.Text = total.ToString(); 
} 
} 

Siehe die Referenzen

Ref 1

Ref 2

Ref 3

Verwandte Themen