我已經動態地創建了一個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();
}
}
它是一個愚蠢的事情。我做得很複雜。我需要頁腳行中的頁面總和,那麼爲什麼我應該考慮一下GridViewTemplate和Itemplate類。只需在會話中添加Total頁面並在DataControlRowType.Footer中將其重新收錄。下面是代碼: – Aruna
保護無效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