mvc 自定义分页控件
参考效果:

参考代码:
/// <summary>
/// 分页
/// </summary>
/// <param name="helper">helper 对象</param>
/// <param name="currentPageIndex">当前页</param>
/// <param name="pageSize">显示条数</param>
/// <param name="recordCount">总条数</param>
/// <param name="pageCount">总页数</param>
/// <returns>html代码</returns>
public static MvcHtmlString Pager(this HtmlHelper helper, long currentPageIndex, long pageSize, long recordCount, long pageCount)
{
if (recordCount == 0)
{
return null;
}
int btnCount = 7;
TagBuilder builder = new TagBuilder("div");
builder.AddCssClass("page");
builder.InnerHtml = GetNormalPage(currentPageIndex, pageSize, recordCount, pageCount, btnCount);
return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
}
/// <summary>
/// 获取普通分页
/// </summary>
private static string GetNormalPage(long currentPageIndex, long pageSize, long recordCount, long pageCount, int btnCount)
{
StringBuilder url = new StringBuilder();
url.Append(HttpContext.Current.Request.Url.AbsolutePath + "?page={0}");
NameValueCollection collection = HttpContext.Current.Request.QueryString;
string[] keys = collection.AllKeys;
for (int i = 0; i < keys.Length; i++)
{
if (keys[i].ToLower() != "page")
url.AppendFormat("&{0}={1}", HttpUtility.UrlEncode(keys[i]), HttpUtility.UrlEncode(collection[keys[i]]));
}
StringBuilder sb = new StringBuilder();
sb.AppendFormat("总共有<i class='nochange'>{0}</i>条记录</span>", recordCount);
if (currentPageIndex > 1)
{
string url1 = string.Format(url.ToString(), currentPageIndex - 1);
sb.AppendFormat(" <a href=\"{0}\"><span> <<</span></a>", url1);
}
else
sb.Append(" <span><<</span>");
sb.Append(GetNumericPage(currentPageIndex, pageSize, recordCount, pageCount, url.ToString(), btnCount));
if (currentPageIndex < pageCount)
{
string url1 = string.Format(url.ToString(), currentPageIndex + 1);
sb.AppendFormat(" <a href=\"{0}\"><span>>> </span></a>", url1);
}
else
sb.Append(" <span>>></span>");
return sb.ToString();
}
/// <summary>
/// 获取数字分页
/// </summary>
/// <param name="currentPageIndex">当前页码</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="recordCount">数据总条数</param>
/// <param name="pageCount">总页数</param>
/// <param name="url">地址</param>
/// <param name="btnCount">没有按钮显示个数</param>
/// <returns></returns>
private static string GetNumericPage(long currentPageIndex, long pageSize, long recordCount, long pageCount, string url, int btnCount)
{
int start = btnCount / 2;
int end = btnCount - 1;
long beginNum = currentPageIndex - start > pageCount - end ? pageCount - end : currentPageIndex - start;
if (beginNum < 1)
{
beginNum = 1;
}
long endNum = beginNum + btnCount > pageCount ? pageCount : beginNum + end;
StringBuilder sb = new StringBuilder();
for (long i = beginNum; i <= endNum; i++)
{
if (i == currentPageIndex)
sb.AppendFormat(" <span class=\"checked\">{0}</span>", currentPageIndex);
else
{
string url1 = PublicVars.GetNewURL(string.Format(url.ToString(), i));
sb.AppendFormat(" <a href=\"{0}\"><span>{1}</span></a>", url1, i);
}
}
return sb.ToString();
}
#endregion

浙公网安备 33010602011771号