グリッドビューを動的に作成しました。デザイン部分に記述されたテンプレートフィールドがあります。すべての列は、次のコード ビハインドを通じて作成されました。その作品はうまくいきます。ここで、各行のページをリストできます。しかし、コードビハインドを介してフッターテンプレートにページの合計を実装する方法がわかりません。
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();
}
}
aspx ページで ShowFooter="True" を指定し、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();
}
}