Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET GridView学习之二 自定义分页功能

ASP.NET GridView学习之二 自定义分页功能2011-12-18 博客园 孟冬伊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;1516public partial class GridViewPagingTest : System.Web.UI.Page17{18  private int PageSize = 10; //每页显示记录数1920  //当前页码,从1开始,利用ViewState在回发之间保存数据21  private int curPage22  {23    get24    {25      return ViewState["curPage"] == null ? 0 : Convert.ToInt32(ViewState["curPage"]);26    }27    set28    {29      ViewState["curPage"] = value;30    }31  }3233  //总页数,利用ViewState在回发之间保存数据34  private int PageCount35  {36    get37    {38      return ViewState["PageCount"] == null ? 0 : Convert.ToInt32(ViewState["PageCount"]);39    }40    set41    {42      ViewState["PageCount"] = value;43    }44  }454647  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    else79    {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    else93    {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    try103    {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