最近写一个页面需要让GridView默认显示最后一页,在CSDN上问了一下,好多人都说用

 

1 if (!IsPostBack)
2         {
3             GridView1.DataBind();
4             GridView1.PageIndex = GridView1.PageCount;
5         }

这样来写,可是实践中发现这样写并不能达到预期的效果,默认仍然显示第一页,只是在点击任意一个翻页后跳到最后一页,而CSDN上有朋友还强调一定要在DataBind()后做页码设定.

后来在MSDN中文论坛上发帖求助才得以解决.

一定要在DataBind()之前设定页码,PageCount也不要用,绑定之前PageCount默认是0,在这里要手动写一个计算页码的方法

 

 

 

 1 private int pageNum()
 2     {
 3         DataSet ds=new DataSet();
 4         SqlDataAdapter da = new SqlDataAdapter(查询,连接);
 5         da.Fill(ds);
 6         int totnum;
 7         int num=ds.Tables[0].Rows.Count;
 8         if (num % 10 == 0)
 9         {
10             totnum = num / 10;      //如果能整除就是正好能分整页
11         }
12         else
13         {
14             totnum = num / 10 + 1;  //如果有余数就是余下的行分在一个新页中
15         }
16 
17         return totnum;
18     }

 

DataBind()之前加上GridView1.PageIndex = pageNum();

 

既然有分页,肯定要有换页的代码,这个GridView1.PageIndex = pageNum();我写在了绑定数据的方法里,那么在protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)中,换页后绑定数据就不能在用这个绑定方法了,否则每次换页都只能显示最后一页,可以在写一个绑定方法,去掉GridView1.PageIndex = pageNum();这一句,然后给PageIndexChanging事件来用

posted on 2008-09-10 13:50  Michael'FrostX'Zhang  阅读(1552)  评论(0编辑  收藏  举报