当前位置:编程学习 > C#/ASP.NET >>

如何动态生成GridView的PagerTemplate

各位好:

    小的在CODING时,遇到一个问题,就是如何动态生成GridView的PagerTemplate。
在之前的CODING中,我成功生成了GridView的BopundField,TemplateField,并实现了数据绑定。
现在又有一个新问题出来了,就是如何生成PagerTemplate。,是否与其TemplateField的生成过程一样。
为抛砖引玉,先作个样子看看。
希望能有人一起交流。
  pivate GridView GenerateGridView()
{
   GridView gd=new GridView();
   gd.AutoGenarateColumn=false;
   gd.Columns.Add(.....);//插入BoundField列。 因为时间关系,就不在写详细代码了,如果有兴趣,可以互相讨论。
    gd.Columns.ADD(.....);//插入TemplateField列。因为时间关系,就不在写详细代码了,如果有兴趣,可以互相讨论。

    //问题在这里。如何生成GridView的PagerTemplate
   
    gd.PagerTemplate...............
    //如何实现??????????????是否与TemplateField列是一样的。
  ...
  }

    请各位每位指点!!!!!
   
--------------------编程问答-------------------- 过了快一年了居然没有人做出来?我来顶一下看看。 --------------------编程问答--------------------

 protected void GridView_RowCreated(object sender, GridViewRowEventArgs e)
        {
           
            int PageSize = this.myGridView.PageSize;
            int PageIndex = this.myGridView.PageIndex;
            int PageCount = this.myGridView.PageCount;
            int RecoderCount = this.myGridView.Rows.Count;

            if (e.Row.RowType == DataControlRowType.Pager)
            {
                LinkButton Frist = new LinkButton();
                LinkButton Prev = new LinkButton();
                LinkButton Next = new LinkButton();
                LinkButton Last = new LinkButton();
                e.Row.Controls.Clear();
                TableCell tc = new TableCell();
                tc.Width = e.Row.Width;
                tc.Controls.Add(new LiteralControl("  "));
                tc.Controls.Add(new LiteralControl("共" + RecoderCount.ToString() + "条记录"));
                tc.Controls.Add(new LiteralControl("  "));
                tc.Controls.Add(new LiteralControl("共" + PageCount.ToString() + "页"));
                tc.Controls.Add(new LiteralControl("  "));
                tc.Controls.Add(new LiteralControl("当前第" + (PageIndex + 1).ToString() + "页"));
                tc.Controls.Add(new LiteralControl("  "));
                tc.Controls.Add(new LiteralControl("每页" + PageSize.ToString() + "条记录"));
                tc.Controls.Add(new LiteralControl("    "));

                Frist.Text = "首页";
                Frist.CommandName = "Page";
                Frist.CommandArgument = "First";
                Frist.Font.Underline = false;
                Frist.Enabled = PageIndex != 0;

                Prev.Text = "上一页";
                Prev.CommandName = "Page";
                Prev.CommandArgument = "Prev";
                Prev.Font.Underline = false;
                Prev.Enabled = PageIndex > 0;

                Next.Text = "下一页";
                Next.CommandName = "Page";
                Next.CommandArgument = "Next";
                Next.Font.Underline = false;
                Next.Enabled = PageIndex < PageCount;

                Last.Text = "尾页";
                Last.CommandName = "Page";
                Last.CommandArgument = "Last";
                Last.Font.Underline = false;
                Last.Enabled = PageIndex != PageCount;

                if (PageIndex <= 0)
                {
                    Prev.Enabled = false;
                    Frist.Enabled = false;
                }
                else
                {
                    Prev.Enabled = true;
                    Frist.Enabled = true;
                }
                tc.Controls.Add(Frist);
                tc.Controls.Add(new LiteralControl("  "));
                tc.Controls.Add(Prev);
                tc.Controls.Add(new LiteralControl("  "));

                for (int i = 0; i < PageCount; i++)
                {
                    if (i == PageIndex)
                    {
                        tc.Controls.Add(new LiteralControl("<span style='color:red;font-weight:bold'>" + (i + 1).ToString() + "</span>"));

                    }
                    else
                    {
                        LinkButton lbBtn = new LinkButton();
                        lbBtn.Text = (i + 1).ToString();
                        lbBtn.CommandName = "Page";
                        lbBtn.CommandArgument = (i + 1).ToString();
                        lbBtn.Font.Underline = false;
                        tc.Controls.Add(lbBtn);
                    }
                    tc.Controls.Add(new LiteralControl("  "));
                }
                if (PageIndex >= PageCount)
                {
                    Next.Enabled = false;
                    Last.Enabled = false;
                }
                else
                {
                    Next.Enabled = true;
                    Last.Enabled = true;
                }
                tc.Controls.Add(Next);
                tc.Controls.Add(new LiteralControl("  "));
                tc.Controls.Add(Last);
                tc.Controls.Add(new LiteralControl("  "));

                e.Row.Controls.Add(tc);
            }
        }
--------------------编程问答-------------------- 晕!这个坟挖的深啊。

对于GridView的模板,你可以在DataBind()之前,通过类似
gridview1.PagerTemplate
= this.LoadTemplate("~/template/abc.ascx");
设置给它。由于这里的参数是可变的,并且ascx内容也可以自动调整(比如绑定Visible属性等等),所以增加了灵活性。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,