如何动态生成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设置给它。由于这里的参数是可变的,并且ascx内容也可以自动调整(比如绑定Visible属性等等),所以增加了灵活性。
= this.LoadTemplate("~/template/abc.ascx");
补充:.NET技术 , ASP.NET