.NET 一个类似google的 分页。
Code
public static string pageStrOut(double pageSize, int curPage, double rsCount, string pagePara)
{
double pageCountDouble=rsCount/pageSize;
int pageCount = Convert.ToInt32(Math.Ceiling(pageCountDouble));
if (pageCount < 1) { pageCount = 1; }
if (curPage < 1) { curPage = 1; }
if(curPage>pageCount){curPage=pageCount;}
int pageListNum=10;
int step=5;
int prePage=curPage-1;
int nextPage=curPage+1;
int pageFromNum=curPage-step;
int pageEndNum=curPage+step;
if(pageCount<step)
{
pageFromNum=1;
pageEndNum=pageCount;
}else if(pageCount<pageListNum)
{
pageFromNum=1;
pageEndNum=pageCount;
}else if(pageEndNum>pageCount)
{
pageEndNum=pageCount;
if( (pageEndNum-pageFromNum) < pageListNum )
{ pageFromNum=pageEndNum-pageListNum+1; }
}else
{
if(pageFromNum<1)
{
pageFromNum=1;
pageEndNum=curPage+step-1;
}
}
StringBuilder pageStr=new StringBuilder();
// pageStr.Append("<style> .PageClass{font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; padding-top:0px;text-align:left;margin-top:2px;}");
pageStr.Append("<style>");
pageStr.Append(" .PageClass ul{ float:left; margin:5px;} ");
pageStr.Append(" .PageClass ul li{ margin-right:3px; float:left;} ");
pageStr.Append(" .PageClass ul li a{border:1px solid #d8dfef; color:#01669A; text-decoration:none;padding:1px 4px;width:20px; height:15px;} ");
pageStr.Append(" .PageClass{font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; padding-top:0px;text-align:left;margin-top:2px;} ");
pageStr.Append(" .PageClass ul li a:hover{ color:#fe6601;text-decoration:none; border:1px solid #d8dfef;padding:1px 4px; height:18px;} ");
pageStr.Append(" </style> ");
pageStr.Append(" <div class=\"PageClass\"> ");
pageStr.Append(" <ul> ");
pageStr.Append(" <li><strong>"+curPage+"/"+pageCount+" </strong></li> ");
pageStr.Append(" </ul> ");
if(curPage!=1){
pageStr.Append(" <ul> ");
pageStr.Append(" <li> ");
pageStr.Append(" <a href=?curPage=1"+pagePara+">首页</a> <a href=?curPage=1&"+pagePara+">上一页</a> ");
pageStr.Append(" </li> ");
pageStr.Append(" </ul>");
}
pageStr.Append(" <ul>");
for(int i=pageFromNum;i<=pageEndNum;i++)
{
pageStr.Append(" <li>" );
if(curPage==i)
{ pageStr.Append(i.ToString()); }
else
{
pageStr.Append(" <a href=?curPage="+i.ToString()+""+pagePara+">"+i.ToString()+"</a> ");
}
pageStr.Append(" </li> ");
}
pageStr.Append(" </ul> ");
if(curPage!=pageCount)
{
pageStr.Append("<ul><li>");
pageStr.Append("<a href=?curPage="+nextPage+"&"+pagePara+">下一页</a> <a href=?curPage="+pageCount+"&"+pagePara+">末页</a> ");
pageStr.Append(" </li></ul> ");
}
pageStr.Append(" </div> ");
return pageStr.ToString();
}
如上,pageSize是每页要显式的条数,curPage 表示当前是第几页 , rsCount是一共有多少条记录, pagePara是页面尾部的参数,
假如页面是 www.gosoa.com.cn/index.aspx?searchType=a&keyword='gosoa' 则 pagePara=searchType=a&keyword='gosoa'
OK,如果有什么问题,可以留言。
创业?