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