最近写一个页面需要让GridView默认显示最后一页,在CSDN上问了一下,好多人都说用
1 if (!IsPostBack)
2 {
3 GridView1.DataBind();
4 GridView1.PageIndex = GridView1.PageCount;
5 }
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 }
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事件来用