HtmlHelper扩展分页

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Text; namespace System.Web.Mvc { public static class MyHtmlHelper { public static HtmlString GetPageBar(this HtmlHelper html, int? pageIndex, int? pageSize, int dataCount) { pageIndex = pageIndex ?? 1; pageSize = pageSize ?? 2; int pageCount = (int)Math.Ceiling((double)dataCount / pageSize.Value); if (pageCount <= 1) { return new HtmlString(""); } int start = pageIndex.Value - 5; if (start < 1) { start = 1; } int end = start + 9; if (end > pageCount) { end = pageCount; } StringBuilder sbPage = new StringBuilder(); if (pageIndex > 1) { sbPage.AppendFormat("<a href='?pageIndex={0}&pageSize={1}'>首页</a> &nbsp;", 1, pageSize); sbPage.AppendFormat("<a href='?pageIndex={0}&pageSize={1}'>上一页</a> &nbsp;", pageIndex - 1, pageSize); } for (int i = start; i <= end; i++) { if (pageIndex == i) { sbPage.Append(i); } else { sbPage.AppendFormat("<a href='?pageIndex={0}&pageSize={1}'>{0}</a> &nbsp;", i, pageSize); } } if (pageIndex < pageCount) { sbPage.AppendFormat("<a href='?pageIndex={0}&pageSize={1}'>下一页</a> &nbsp;", pageIndex + 1, pageSize); sbPage.AppendFormat("<a href='?pageIndex={0}&pageSize={1}'>末页</a> &nbsp;", pageCount, pageSize); } return new HtmlString(sbPage.ToString()); } } }

最好借鉴:

/// <summary>
/// 分页Pager显示
/// </summary>
/// <param name="html"></param>
/// <param name="currentPageStr">标识当前页码的QueryStringKey</param>
/// <param name="pageSize">每页显示</param>
/// <param name="totalCount">总数据量</param>
/// <returns></returns>
public static string Pager(this HtmlHelper html, string currentPageStr, int pageSize, int totalCount)
{
var queryString = html.ViewContext.HttpContext.Request.QueryString;
int currentPage = 1; //当前页
int.TryParse(queryString[currentPageStr], out currentPage); //与相应的QueryString绑定
var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
var dict = new RouteValueDictionary(html.ViewContext.RouteData.Values);

var output = new StringBuilder();

foreach (string key in queryString.Keys)
if (queryString[key] != null && !string.IsNullOrEmpty(key))
dict[key] = queryString[key];
if (totalPages > 1)
{
if (currentPage != 1)
{//处理首页连接
dict["p"] = 1;
output.AppendFormat("{0} ",html.RouteLink("首页", dict));
}
if (currentPage > 1)
{//处理上一页的连接
dict["p"] = currentPage - 1;
output.Append(html.RouteLink("上一页", dict));
}
else
{
output.Append("上一页");
}
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));
}
else
{//一般页处理
dict["p"] = currentPage + i - currint;
output.Append(html.RouteLink((currentPage + i - currint).ToString(), dict));
}
output.Append(" ");
}
if (currentPage < totalPages)
{//处理下一页的链接
dict["p"] = currentPage + 1;
output.Append(html.RouteLink("下一页", dict));
}
else
{
output.Append("下一页");
}
output.Append(" ");
if (currentPage != totalPages)
{
dict["p"] = totalPages;
output.Append(html.RouteLink("末页", dict));
}
output.Append(" ");
}
output.AppendFormat("{0} / {1}", currentPage, totalPages);//这个统计加不加都行
return output.ToString();
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值