GridView学习之二自定义分页功能

  1就一些核心代码
  2ClientInfo.cs和ClientinfoAccessObj.cs在学习一中有过了
  3
  4using System;
  5using System.Data;
  6using System.Configuration;
  7using System.Collections;
  8using System.Web;
  9using System.Web.Security;
 10using System.Web.UI;
 11using System.Web.UI.WebControls;
 12using System.Web.UI.WebControls.WebParts;
 13using System.Web.UI.HtmlControls;
 14using System.Collections.Generic;
 15
 16public partial class GridViewPagingTest : System.Web.UI.Page
 17{
 18    private int PageSize = 10;  //每页显示记录数
 19
 20    //当前页码,从1开始,利用ViewState在回发之间保存数据
 21    private int curPage
 22    {
 23        get
 24        {
 25            return ViewState["curPage"== null ? 0 : Convert.ToInt32(ViewState["curPage"]);
 26        }

 27        set
 28        {
 29            ViewState["curPage"= value;
 30        }

 31    }

 32
 33    //总页数,利用ViewState在回发之间保存数据
 34    private int PageCount
 35    {
 36        get
 37        {
 38            return ViewState["PageCount"== null ? 0 : Convert.ToInt32(ViewState["PageCount"]);
 39        }

 40        set
 41        {
 42            ViewState["PageCount"= value;
 43        }

 44    }

 45
 46
 47    protected void Page_Load(object sender, EventArgs e)
 48    {
 49        if (!IsPostBack)
 50        {
 51            //第一次请求
 52            curPage = 1;
 53            GridView1.DataSource = GetClientsForPage(curPage);//根据当前页获得客户信息
 54            lblInfo.Text = string.Format("第{0}页/共{1}页"1, PageCount);
 55            GridView1.DataBind();//绑定数据
 56        }

 57    }

 58    //根据页下标获得页面的客户信息
 59    private List<ClientInfo> GetClientsForPage(int pageIndex)
 60    {
 61        ClientInfoAccessObj accessor = new ClientInfoAccessObj();
 62        List<ClientInfo> clients = accessor.GetAllClients();//获得所有客户信息
 63        PageCount = clients.Count / PageSize + 1;//将客户信息的总数除以每页显示的记录数获得总页数
 64        if (pageIndex > PageCount)
 65            return null;
 66        int StartIndex = (pageIndex - 1* PageSize;//获得数据下标
 67        List<ClientInfo> ret = new List<ClientInfo>();
 68        for (int i = StartIndex; i < StartIndex + PageSize && i < clients.Count; i++)
 69            ret.Add(clients[i]);
 70        return ret;
 71    }

 72    protected void btnNext_Click(object sender, EventArgs e)
 73    {
 74        if (curPage+1>PageCount)//判断当前是否大于页总数
 75        {
 76            curPage = PageCount;
 77        }

 78        else
 79        {
 80            curPage++;
 81        }

 82        GridView1.DataSource = GetClientsForPage(curPage);
 83        lblInfo.Text = string.Format("第{0}页/共{1}页", curPage, PageCount);
 84        GridView1.DataBind();
 85    }

 86    protected void btnPrew_Click(object sender, EventArgs e)
 87    {
 88        if (curPage - 1 ==0 )//判断当前是否大于页总数
 89        {
 90            curPage = 1;
 91        }

 92        else
 93        {
 94            curPage--;
 95        }

 96        GridView1.DataSource = GetClientsForPage(curPage);
 97        lblInfo.Text = string.Format("第{0}页/共{1}页", curPage, PageCount);
 98        GridView1.DataBind();
 99    }

100    protected void btnGo_Click(object sender, EventArgs e)
101    {
102        try
103        {
104            int pageIndex = Convert.ToInt32(txtPageIndex.Text);
105            if (pageIndex > PageCount)
106            {
107                pageIndex = PageCount;
108            }

109            if (pageIndex < 1)
110            {
111                pageIndex = 1;
112            }

113            curPage = pageIndex;
114            GridView1.DataSource = GetClientsForPage(curPage);
115            lblInfo.Text = string.Format("第{0}页/共{1}页", curPage, PageCount);
116            GridView1.DataBind();
117        }

118        catch (Exception ex)
119        {
120            ClientScript.RegisterClientScriptBlock(this.GetType(),"info","alert('非法字符');",true);//向页面注入javaScript脚本
121        }

122    }

123}

124
原文地址:https://www.cnblogs.com/mdy41034264/p/1352116.html