分页底层实现(超原理)
--样式
.paginator
{
??? font: 12px Arial, Helvetica, sans-serif;
??? padding: 10px 20px 10px 0;
??? margin: 0px;
}
.paginator a
{
??? border: solid 1px #ccc;
??? color: #0063dc;
??? cursor: pointer;
??? text-decoration: none;
}
.paginator a:visited
{
??? padding: 1px 6px;
??? border: solid 1px #ddd;
??? background: #fff;
??? text-decoration: none;
}
.paginator .cpb
{
??? border: 1px solid #F50;
??? font-weight: 700;
??? color: #F50;
??? background-color: #ffeee5;
}
.paginator a:hover
{
??? border: solid 1px #F50;
??? color: #f60;
??? text-decoration: none;
}
.paginator a, .paginator a:visited, .paginator .cpb, .paginator a:hover
{
??? float: left;
??? height: 16px;
??? line-height: 16px;
??? min-width: 10px;
??? _width: 10px;
??? margin-right: 5px;
??? text-align: center;
??? white-space: nowrap;
??? font-size: 12px;
??? font-family: Arial,SimSun;
??? padding: 0 3px;
}
--分页代码实现
//参数分别为一页多少条数据,当前页,一共多少条
? public static string ShowPageNavigate(int pageSize, int currentPage, int totalCount)
??????? {
??????????? string redirectTo = "";
??????????? pageSize = pageSize == 0 ? 3 : pageSize;
??????????? var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
??????????? var output = new StringBuilder();
??????????? if (totalPages > 1)
??????????? {
??????????????? if (currentPage != 1)
??????????????? {//处理首页连接
??????????????????? output.AppendFormat("<a class='pageLink' href='{0}?pageIndex=1&pageSize={1}'>首页</a> ", redirectTo, pageSize);
??????????????? }
??????????????? if (currentPage > 1)
??????????????? {//处理上一页的连接
??????????????????? output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>上一页</a> ", redirectTo, currentPage - 1, pageSize);
??????????????? }
??????????????? else
??????????????? {
??????????????????? // output.Append("<span class='pageLink'>上一页</span>");
??????????????? }
??????????????? output.Append(" ");
??????????????? int currint = 5;
??????????????? for (int i = 0; i <= 10; i++)
??????????????? {//一共最多显示10个页码,前面5个,后面5个
???????????????????
??????????????????? if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
??????????????????? {
??????????????????????? if (currint == i)
??????????????????????? {//当前页处理
??????????????????????????? //output.Append(string.Format("[{0}]", currentPage));
??????????????????????????? output.AppendFormat("<a class='cpb' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage, pageSize, currentPage);
??????????????????????? }
??????????????????????? else
??????????????????????? {//一般页处理
??????????????????????????? output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint);
??????????????????????? }
??????????????????? }
??????????????????? output.Append(" ");
??????????????? }
??????????????? if (currentPage < totalPages)
??????????????? {//处理下一页的链接
??????????????????? output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>下一页</a> ", redirectTo, currentPage + 1, pageSize);
??????????????? }
??????????????? else
??????????????? {
??????????????????? //output.Append("<span class='pageLink'>下一页</span>");
??????????????? }
??????????????? output.Append(" ");
??????????????? if (currentPage != totalPages)
??????????????? {
??????????????????? output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>末页</a> ", redirectTo, totalPages, pageSize);
??????????????? }
??????????????? output.Append(" ");
??????????? }
??????????? output.AppendFormat("第{0}页 / 共{1}页", currentPage, totalPages);//这个统计加不加都行
??????????? return output.ToString();
??????? }