/// <summary>
/// 生成分页代码
/// </summary>
/// <param name="totalPageNo">总页数</param>
/// <param name="pageNo">当前页</param>
/// <param name="parameters">参数(&开头)</param>
/// <param name="showPageCount">分页中间部分的显示的页码数量</param>
/// <returns></returns>
protected string BulidPage(int totalPageNo, int pageNo, string parameters, int showPageCount = 10)
{
StringBuilder strPage = new StringBuilder("");
strPage.Append("<div class=\"pageBox\">");
//如果仅有一页,那么不显示分页
if (totalPageNo == 1)
return "";
#region 不合理判断
if (pageNo > totalPageNo)
pageNo = totalPageNo;
#endregion
#region 拼接首页和上一页
if (pageNo == 1)
strPage.Append("<a class=\"disabled\">首页</a><a class=\"disabled\">上一页</a>");
else
strPage.Append("<a href=\"News.aspx?pageNo=1" + parameters + "\">首页</a><a href=\"News.aspx?pageNo=" + (pageNo - 1) + parameters + "\">上一页</a>");
#endregion
#region 拼接中间部分
if (showPageCount > 0)
{
//分页共几屏
//eg:2屏
//①【首页 上一页 1 2 3 4 5 下一页 尾页】 ②【首页 上一页 6 7 8 9 10 下一页 尾页】
//eg:3屏
//①【首页 上一页 1 2 3 4 5 下一页 尾页】 ②【首页 上一页 6 7 8 9 10 下一页 尾页】 ③【首页 上一页 11 12 下一页 尾页】
int totalDuan = totalPageNo % showPageCount == 0 ? totalPageNo / showPageCount : totalPageNo / showPageCount + 1;
//当前页码在分页的第几屏
int currDuan = pageNo % showPageCount == 0 ? pageNo / showPageCount : pageNo / showPageCount + 1;
//第一种情况:不显示省略号(就一屏)
if (totalDuan == 1) //totalPageNo <= showPageCount
{
for (int i = 1; i < totalPageNo + 1; i++)
{
if (pageNo == i)
strPage.Append("<span class=\"current\">" + i + "</span>");
else
strPage.Append("<a href=\"News.aspx?pageNo=" + i + parameters + "\">" + i + "</a>");
}
}
else
{
//判断左边是否添加省略号
if (currDuan > 1)
{
strPage.Append("<span>…</span>");
}
//拼接中间部分页码
if (currDuan != totalDuan)
{
for (int i = (currDuan - 1) * showPageCount + 1; i < currDuan * showPageCount + 1; i++)
{
if (pageNo == i)
strPage.Append("<span class=\"current\">" + i + "</span>");
else
strPage.Append("<a href=\"News.aspx?pageNo=" + i + parameters + "\">" + i + "</a>");
}
}
else
{
for (int i = (currDuan - 1) * showPageCount + 1; i < totalPageNo + 1; i++)
{
if (pageNo == i)
strPage.Append("<span class=\"current\">" + i + "</span>");
else
strPage.Append("<a href=\"News.aspx?pageNo=" + i + parameters + "\">" + i + "</a>");
}
}
//判断右边是否添加省略号
if (currDuan < totalDuan)
{
strPage.Append("<span>…</span>");
}
}
}
#endregion
#region 拼接下一页和尾页
if (pageNo == totalPageNo)
strPage.Append("<a class=\"disabled\">下一页</a><a class=\"disabled\">尾页</a>");
else
strPage.Append("<a href=\"News.aspx?pageNo=" + (pageNo + 1) + parameters + "\">下一页</a><a href=\"News.aspx?pageNo=" + totalPageNo + parameters + "\">尾页</a>");
#endregion
strPage.Append("</div>");
return strPage.ToString();
}
样式部分:
<style type="text/css">
.pageBox{ margin:20px 0; text-align:center;}
.pageBox a{ margin:0 5px; border:1px solid #DDD; padding:5px 10px;}
.pageBox a.disabled{ background:#EEE;}
.pageBox span.current{ color:#FF0000;}
.pageBox span{ margin:0 5px; border:1px solid #DDD; padding:5px 10px;}
</style>