2017-01-16 41 views
0

下面是我的GridView做總和在Gidview的RowDataBound:如何使用ASP.NET C#

<asp:GridView ID="gv_TotalAllReg" runat="server" AutoGenerateColumns="false" OnRowDataBound="gv_TotalAllReg_RowDataBound" DataKeyNames="dt" CssClass="table table-bordered table-striped"> 
       <Columns> 
        <asp:TemplateField HeaderText="Sno" HeaderStyle-BackColor="#f1f1f1"> 
         <ItemTemplate> 
          <%# Container.DataItemIndex + 1 %> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:BoundField DataField="dt" DataFormatString="{0:MM-dd-yyyy}" HeaderText="Date" /> 
        <asp:TemplateField HeaderText="New Registrations"> 
         <ItemTemplate> 
          <asp:Label ID="lbl_Registrations" runat="server"></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
         <asp:TemplateField HeaderText="Cumulative Registrations"> 
         <ItemTemplate> 
          <asp:Label ID="lbl_CumulativeRegistrations" runat="server"></asp:Label> 
         </ItemTemplate> 

       </Columns> 
      </asp:GridView> 

我顯示日期明智的新的登記,但我需要新的註冊累計註冊記憶基地:

Sno Date   New Registrations  Cumulative Registrations 
    1  12-23-2016   2 
    2  12-24-2016   6 
    3  12-25-2016   1 

我需要像下面的輸出和累積註冊意味着我已經創建了一個函數,顯示日期從2016年12月23日至25日。所以基於獲取新註冊的日期,我也想基於新的註冊顯示累積註冊,基於新的註冊添加暨註冊以及如何在RowDataBound中實現註冊。

Sno Date   New Registrations  Cumulative Registrations 
    1  12-23-2016   2       2 
    2  12-24-2016   6       8 
    3  12-25-2016   1       9 

以下是我的RowDataBound代碼。

protected void gv_TotalAllReg_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 

    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 

    // e.Row.Cells.add(count.tostring()); 



     string Registration = string.Empty, Innovation = string.Empty; 
     string daildate = gv_TotalAllReg.DataKeys[e.Row.RowIndex].Values[0].ToString(); 



     bo.Para1 = daildate; 

     DataTable dt = bl.Get_DailyReport(bo); 
     ((Label)e.Row.FindControl("lbl_Registrations")).Text = dt.Rows[0]["newregistrations"].ToString(); 

    // my cum reg label  ((Label)e.Row.FindControl("lbl_CumulativeRegistrations")).Text 

     } 

     } 

我在gridview和頁面加載中調用該方法時爲日期列寫了單獨的函數。

回答

1

我認爲你正在尋找這樣的東西。它使用OnRowDataBound事件將當前行註冊計數添加到總計中,並將當前總計寫入行中的標籤。

int total = 0; 
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //cast the current row to a datarowview 
     DataRowView row = e.Row.DataItem as DataRowView; 

     //add the registrations to the total 
     total += Convert.ToInt32(row["Registrations"]); 

     //find the label in the row with findcontrol and cast it back to one 
     Label label = e.Row.FindControl("lbl_CumulativeRegistrations") as Label; 

     //fill the label with the current total 
     label.Text = string.Format("{0:N0}", total); 
    } 
} 
+0

我已經使用RowDataBound完成了幾乎所有的功能,請根據我的上述代碼更新您的答案,因爲我很困惑舞臺。 @VDWWD – MMK

+0

total + = Convert.ToInt32(dt.Rows [0] [「newregistrations」]);像這樣補充,非常感謝你,這是你第二次拯救我的生命。 @VDWWD – MMK

+0

不客氣! – VDWWD