废话不说了,直接上代码:下面附加样式文件
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
namespace MrCantus.Builder
{
/// <summary>
/// 分页字符串构建类
/// Author:Zhang Heng
/// Date:2009-9-21 21:35
/// </summary>
public class PagerBuilder
{
/// <summary>
/// 构建分页字符串,返回一个带HTML代码的分页样式,可以用label在页面显示,
也可以用this.Controls.Add(new LiteralControl(string));方法加入到页面控件中
/// </summary>
/// <param name="total">总记录数</param>
/// <param name="pageSize">每页显示数目</param>
/// <param name="currentPage">当前页码</param>
/// <param name="thisPage">页面名称及以?分割的地址栏参数</param>
/// <returns>字符串</returns>
public static string Pager(int total, int pageSize, int currentPage, Page thisPage)
{
if (total <= pageSize)
{
return "";
}
//分页字符串
StringBuilder pagerString = new StringBuilder("<ul class=\"ulPager\">");
int allPages = 0; //总页数
int previousPage = 0; //上一页页码
int nextPage = 0; //下一页页码
int beginCount = 0; //当前页前面的页数
int endCount = 0; //当前页后面的页数
string page = ""; //地址栏分页参数
//获取页面地址栏及?分割的参数
string pageName = null == thisPage ?"":thisPage.Request.Url.PathAndQuery;
//判断页面地址栏是否已含有参数
page = pageName.Contains("?") ? pageName.Contains("page=") ?
pageName.Substring(0, pageName.IndexOf("page=") + 5) : pageName
+ "&page=" : pageName + "?page=";
//判断当前页
currentPage = currentPage < 1 ? 1 : currentPage;
//计算总页数
if (pageSize > 0)
{
allPages = total / pageSize;
allPages = total % pageSize != 0 ? allPages + 1 : allPages;
allPages = allPages == 0 ? 1 : allPages;
}
previousPage = currentPage - 1;
nextPage = currentPage + 1;
//中间页起始序号
beginCount = currentPage + 5 > allPages ? allPages - 9 : currentPage - 4;
//中间页终止序号
endCount = currentPage < 5 ? 10 : currentPage + 5;
//为了避免产生负数,如果小于1则从序号1开始
beginCount = beginCount < 1 ? 1 : beginCount;
//页码+5可能超出总页数,要将其控制在总页数之内
endCount = endCount >= allPages ? allPages : endCount;
//判断是否为首页
pagerString.Append(currentPage > 1 ? "<li><a href=\""
+ page + "1\">FIRST</a></li><li><a href=\""
+ page + previousPage + "\">PREVIOUS</a></li>" : null);
//中间页处理,这个增加时间复杂度,减小空间复杂度
for (int i = beginCount; i <= endCount; i++)
{
pagerString.Append(currentPage == i ?
"<li><a class=\"currentPage\" href=\""
+ page + currentPage + "\">" + i
+ "</a></li>" : "<li><a href=\""
+ page + i + "\">" + i + "</a></li>");
}
//判断是否为末页
pagerString.Append(currentPage != allPages ? "<li><a href=\""
+ page + nextPage + "\">NEXT</a><li><a href=\""
+ page + allPages + "\">LAST</a></li>" : null);
//结束标记
pagerString.Append("</ul><div></div>");
return pagerString.ToString();
}
}
}
/*----------pager begin----------*/
.ulPager
{
margin: 20px 5%;
}
.ulPager li
{
list-style: none;
display: inline;
}
.ulPager li a
{
display: block;
float: left;
padding: 3px 6px;
border: solid 1px #C6E5F2;
background-color: #DEF1F9;
margin: 2px;
}
.ulPager li a:hover
{
border: solid 1px #007FA9;
text-decoration: none;
}
.ulPager li .currentPage
{
color: #ffffff;
background-color: #4A6969;
}
/*----------pager end----------*/





自己顶一下。哈哈