PageInfo.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace WebPageNew.HtmlPage { public class PageInfo { /// <summary> /// 数据库中信息总条数 /// </summary> public int TotalItems { get; set; } /// <summary> /// 每页条数 /// </summary> public int ItemsPerPage { get; set; } /// <summary> /// 当前页 /// </summary> public int CurrentPage { get; set; } /// <summary> /// 总页数 /// </summary> public int TotalPages { get { return (int)Math.Ceiling((decimal)TotalItems / ItemsPerPage); } } } }
Paging.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Text; namespace WebPageNew.HtmlPage { public class Paging { /// <summary> /// 最新完整分页。2013年5月5日更新,在学习老赵的UserControl中应用到。 /// </summary> /// <param name="pageInfo"></param> /// <param name="PageUrl">当前页面的地址</param> /// <returns></returns> public string MyPage(PageInfo pageInfo, string PageUrl) { int Prev = pageInfo.CurrentPage - 1; int Next = pageInfo.CurrentPage + 1; StringBuilder result = new StringBuilder(); //首页 string strFirst = string.Empty; strFirst = "<a href='" + PageUrl + "?PageNumber=1 '>Frist</a>"; result.Append(strFirst); //上一页 string strPrev = string.Empty; if (Prev < 1) Prev = 1; strPrev = "<a href='" + PageUrl + "?PageNumber=" + Prev.ToString() + " '>Prev</a>"; result.Append(strPrev); //页码 int PageNumSize = 11; int StartPage = 1; string strPage = string.Empty; if (pageInfo.CurrentPage > 5)//如果当前页面大于5 { StartPage = pageInfo.CurrentPage - 5;//页码开始的序号为:当前页 - 5 PageNumSize = pageInfo.CurrentPage + 5;//页面的最后为:当前页 + 5 } if (pageInfo.TotalPages <= 11)//如果总页数小于11,那么设置显示的总页数为:小于11的那个页码 PageNumSize = pageInfo.TotalPages; if (PageNumSize > pageInfo.TotalPages) PageNumSize = pageInfo.TotalPages; //---- int startPage = 1; int lastPage = 11; if (pageInfo.TotalPages <= 11) { startPage = 1; lastPage = pageInfo.TotalPages; } else { if (pageInfo.CurrentPage > 5) { startPage = pageInfo.CurrentPage - 5; lastPage = pageInfo.CurrentPage + 5; if (lastPage > pageInfo.TotalPages) { startPage = pageInfo.TotalPages - 10; lastPage = pageInfo.TotalPages; } } } //页号---------------- for (int i = startPage; i <= lastPage; i++) { if (i == pageInfo.CurrentPage) strPage = "<a class=\"selected\" href=\"" + PageUrl + "\">" + i.ToString() + "</a>"; else strPage = "<a href='" + PageUrl + "?PageNumber=" + i.ToString() + "'>" + i.ToString() + "</a>"; result.Append(strPage); } //下一页 string strNext = string.Empty; if (Next > pageInfo.TotalPages) Next = pageInfo.TotalPages; strNext = "<a href='" + PageUrl + "?PageNumber=" + Next.ToString() + " '>Next</a>"; result.Append(strNext); //末页 string strLast = string.Empty; strLast = "<a href='" + PageUrl + "?PageNumber=" + pageInfo.TotalPages + " '>Last</a>"; result.Append(strLast); return result.ToString(); } } }
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebPageNew.Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> #head .title{ height:80px; background-color:#444444;} #Pageing A{ background-color:#008844; border:1px solid White; text-decoration:none; color:White; padding: .1em .6em .2em .6em;} #Pageing A.selected{ background-color:#AA7700;} body { font-size: .85em; font-family: "Trebuchet MS", Verdana, Helvetica, Sans-Serif; color: #232323; background-color: #fff; } </style> </head> <body> <form id="form1" runat="server"> <div> <asp:DataList ID="DataList1" runat="server"> </asp:DataList> <div id="Pageing" style="padding-bottom:10px;"> <%= str %> </div> </div> </form> </body> </html>
Default.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using WebPageNew.HtmlPage; namespace WebPageNew { public partial class Default : System.Web.UI.Page { protected string str = ""; protected void Page_Load(object sender, EventArgs e) { //设置page信息 string strPageNum = Request.QueryString["PageNumber"]; if (string.IsNullOrEmpty(strPageNum)) strPageNum = "1"; #region 设置分页信息 //数据库中获取消息总条数TotalItems //设置每页条数 //设置当前页 PageInfo pageinfo = new PageInfo { CurrentPage = Convert.ToInt32(strPageNum), ItemsPerPage = 11, TotalItems = 200 }; #endregion #region 数据绑定 //根据pageinfo请求数据库数据,绑定到datalist //当前页 pageinfo.CurrentPage //每页数据条数 pageinfo.ItemPerPage //计算出取 n -- n+10条 #endregion #region 输出page Paging p = new Paging(); str = p.MyPage(pageinfo, "http://localhost:5867/Default.aspx"); #endregion } } }