2013-05-22 42 views
2

我已經動態地創建了一個gridview。設計部分描述了模板字段。所有的列都是通過後面的代碼創建的,如下所示。它的工作很好。在這裏我可以列出每一行的頁面。但我不知道如何通過代碼後面的頁腳模板實現頁面總和。如何在asp.net中動態添加頁腳模板

TemplateField Pages = new TemplateField(); 
Pages.HeaderText = "Pages"; 
Pages.ItemTemplate = new GridViewTemplate_Pages(); 
gv1.Columns.Add(Pages); 


    public class GridViewTemplate_Pages : ITemplate 
    { 

     void ITemplate.InstantiateIn(Control container) 
     { 
      Label PagesLabel = new Label(); 
      PagesLabel.DataBinding += new EventHandler(this.PagesLabel_DataBinding); 
      container.Controls.Add(PagesLabel); 
     } 

     void PagesLabel_DataBinding(object sender, EventArgs e) 
     { 
      Label lbl1 = (Label)sender; 
      GridViewRow row = (GridViewRow)lbl1.NamingContainer; 
      lbl1.Text = DataBinder.Eval(row.DataItem, "PagesReceived").ToString(); 
     } 
    } 

給定ShowFooter =「True」在aspx頁面和RowDataBound分開書寫。如果我在aspx頁面中給出頁腳模板但不知道如何以編程方式得到結果,下面的代碼工作正常。請指教。

protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      int RowTotalPages = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "PagesReceived")); 
      TotalPages = TotalPages + RowTotalPages; 
     } 
     if (e.Row.RowType == DataControlRowType.Footer) 
     { 
      Label m = (Label)e.Row.FindControl("gv1TotalPages"); 
      m.Text = TotalPages.ToString(); 
     } 
    } 
+0

它是一個愚蠢的事情。我做得很複雜。我需要頁腳行中的頁面總和,那麼爲什麼我應該考慮一下GridViewTemplate和Itemplate類。只需在會話中添加Total頁面並在DataControlRowType.Footer中將其重新收錄。下面是代碼: – Aruna

+0

保護無效gv1_RowDataBound(對象發件人,GridViewRowEventArgs E) { 如果(e.Row.RowType == DataControlRowType.DataRow) { INT RowTotalPages = Convert.ToInt32(的DataBinder.Eval(e.Row。 DataItem,「PagesReceived」)); TotalPages = TotalPages + RowTotalPages; Session.Add(「TotalPages」,TotalPages.ToString()); (e.RowType == DataControlRowType.Footer) {e.Row.Cells [5] .Text = Session [「TotalPages」]。ToString(); } } – Aruna

回答

0

它是一個愚蠢的東西。我做得很複雜。我需要頁腳行中的頁面總和,那麼爲什麼我應該考慮一下GridViewTemplate和Itemplate類。只需在會話中添加Total頁面並在DataControlRowType.Footer中將其重新收錄。這裏是代碼:

protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      int RowTotalPages = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "PagesReceived")); 
      int RowTotalCharges = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "ChargesReceived")); 
      TotalPages = TotalPages + RowTotalPages; 
      TotalCharges = TotalCharges + RowTotalCharges; 
      Session.Add("TotalPages", TotalPages.ToString()); 
      Session.Add("TotalCharges", TotalCharges.ToString()); 
     } 
     if (e.Row.RowType == DataControlRowType.Footer) 
     { 
      e.Row.Cells[4].Text = "Batches Count: " + gv1.Rows.Count.ToString(); 
      e.Row.Cells[5].Text = Session["TotalPages"].ToString(); 
      e.Row.Cells[6].Text = Session["TotalCharges"].ToString(); 
     } 
    } 
1

您可以像這樣創建頁腳到gridview。

//代碼

GridView gv = new GridView(); 
gv.RowCreated += delegate(object dsender, GridViewRowEventArgs ge) 
{ 
    if (ge.Row.RowType == DataControlRowType.Footer) 
     ge.Row.Cells[0].Text = "Something"; 
}; 
gv.AutoGenerateColumns = false; 
gv.ShowFooter = true; 
BoundField bf = new BoundField(); 
bf.HeaderText = "col 1"; 
bf.DataField = "Length"; 
gv.Columns.Add(bf); 
gv.DataSource = new string[] { "One", "Two", "Three" }; 
gv.DataBind(); 
Form.Controls.Add(gv); 

這是動態創建的GridView和頁腳。你可以相應地改變。

+0

謝謝。但上面的代碼會在頁腳中放置「Something」一詞。我想在動態創建的「頁面」模板字段中添加頁面總和。所以,請讓我知道如何在Itemplate類中編寫代碼。 – Aruna

+0

你是什麼意思的網頁,並加上這個總和? – iamCR

相關問題