/// <summary> /// 生成分页统计结果 /// </summary> /// <param name="htmlHelper">被扩展的HtmlHelper实例</param> /// <param name="pagingDataSet">分页集合</param> /// <returns></returns> public static MvcHtmlString PagingResults(this HtmlHelper htmlHelper, IPagingDataSet pagingDataSet) { TagBuilder builder = new TagBuilder("span"); builder.AddCssClass("tn-page-results tn-text-note"); long startCount = (pagingDataSet.PageIndex - 1) * pagingDataSet.PageSize + 1; long endCount = pagingDataSet.PageIndex * pagingDataSet.PageSize; if (endCount > pagingDataSet.TotalRecords) endCount = pagingDataSet.TotalRecords; builder.SetInnerText(string.Format("{0}-{1} 共{2}", startCount, endCount, pagingDataSet.TotalRecords)); return MvcHtmlString.Create(builder.ToString()); }
/// <summary> /// 生成分页统计结果 /// </summary> /// <param name="htmlHelper">被扩展的HtmlHelper实例</param> /// <param name="pagingDataSet">分页集合</param> /// <returns></returns> public static MvcHtmlString PagingResults(this HtmlHelper htmlHelper, IPagingDataSet pagingDataSet) { TagBuilder builder = new TagBuilder("span"); builder.AddCssClass("tn-page-results tn-text-note"); long startCount = (pagingDataSet.PageIndex - 1) * pagingDataSet.PageSize + 1; long endCount = pagingDataSet.PageIndex * pagingDataSet.PageSize; if (endCount > pagingDataSet.TotalRecords) { endCount = pagingDataSet.TotalRecords; } builder.SetInnerText(string.Format("{0}-{1} 共{2}", startCount, endCount, pagingDataSet.TotalRecords)); return(MvcHtmlString.Create(builder.ToString())); }
/// <summary> /// 呈现分页统计 /// </summary> /// <param name="html">被扩展的HtmlHelper</param> /// <param name="pagingDataSet">分页组件</param> /// <returns></returns> public static IHtmlContent PagingResults(this IHtmlHelper html, IPagingDataSet pagingDataSet) { TagBuilder builder = new TagBuilder("div"); builder.AddCssClass("info_box"); long startCount = (pagingDataSet.PageIndex - 1) * pagingDataSet.PageSize + 1; builder.InnerHtml.AppendFormat("<span>{0}</span>-", startCount); long endCount = pagingDataSet.PageIndex * pagingDataSet.PageSize; if (endCount > pagingDataSet.TotalRecords) { endCount = pagingDataSet.TotalRecords; } builder.InnerHtml.AppendFormat("<span>{0}</span> 共 ", endCount); builder.InnerHtml.AppendFormat("<span>{0}</span> 条", pagingDataSet.TotalRecords); var writer = new StringWriter(); builder.WriteTo(writer, HtmlEncoder.Default); return(new HtmlString(writer.ToString())); }
/// <summary> /// 呈现分页按钮 /// </summary> /// <param name="html">被扩展的HtmlHelper</param> /// <param name="pagingDataSet">数据集</param> /// <param name="updateTargetId">异步分页时,被更新的目标元素Id</param> /// <param name="paginationMode">分页按钮显示模式</param> /// <param name="numericPagingButtonCount">数字分页按钮显示个数</param> /// <param name="enableAjax">是否使用ajax分页</param> /// <returns>分页按钮html代码</returns> private static IHtmlContent PagingButton(this IHtmlHelper html, IPagingDataSet pagingDataSet, bool enableAjax, string updateTargetId, PagingMode pagingMode = PagingMode.NumericNextPrevious, int numericPagingButtonCount = 7, string ajaxUrl = null) { if (pagingDataSet.TotalRecords == 0 || pagingDataSet.PageSize == 0) { return(HtmlString.Empty); } //计算总页数 int totalPages = (int)(pagingDataSet.TotalRecords / (long)pagingDataSet.PageSize); if ((pagingDataSet.TotalRecords % pagingDataSet.PageSize) > 0) { totalPages++; } //未超过一页时不显示分页按钮 if (totalPages <= 1) { return(HtmlString.Empty); } bool showFirst = false; if (pagingMode == PagingMode.NextPreviousFirstLast) { showFirst = true; } bool showLast = false; if (pagingMode == PagingMode.NextPreviousFirstLast) { showLast = true; } bool showPrevious = true; bool showNext = true; bool showNumeric = false; if (pagingMode == PagingMode.NumericNextPrevious) { showNumeric = true; } //显示多少个数字分页按钮 //int numericPageButtonCount = 10; //对pageIndex进行修正 if ((pagingDataSet.PageIndex < 1) || (pagingDataSet.PageIndex > totalPages)) { pagingDataSet.PageIndex = 1; } //string pagingContainer = "<div class=\"tn-pagination-btn\""; string pagingContainer = "<ul class=\"pagination\""; if (enableAjax) { pagingContainer += " plugin=\"ajaxPagingButton\" data=\"" + WebUtility.HtmlEncode(JsonConvert.SerializeObject(new { updateTargetId = updateTargetId })) + "\""; } pagingContainer += ">"; StringBuilder pagingButtonsHtml = new StringBuilder(pagingContainer); //构建 "首页" if (showFirst) { if ((pagingDataSet.PageIndex > 1) && (totalPages > numericPagingButtonCount)) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat("<li>{0}</li>", BuildLink("<<", GetPagingNavigateUrl(html, 1, ajaxUrl), "Previous")); } else if (pagingMode == PagingMode.NextPreviousFirstLast) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat("<li class=\"disabled\"><a href=\"###\" aria-label=\"Previous\"><span aria-hidden=\"true\">{0}</span></a></li>", "<<"); } } //构建 "上一页" if (showPrevious) { pagingButtonsHtml.AppendLine(); if (pagingDataSet.PageIndex == 1) { pagingButtonsHtml.AppendFormat("<li class=\"disabled\"><a href=\"###\" aria-label=\"Previous\"><span aria-hidden=\"true\">{0}</span></a></li>", "«"); } else { pagingButtonsHtml.AppendFormat("<li>{0}</li>", BuildLink("«", GetPagingNavigateUrl(html, pagingDataSet.PageIndex - 1, ajaxUrl), "Previous")); } } //构建 数字分页部分 if (showNumeric) { int startNumericPageIndex; if (numericPagingButtonCount > totalPages || pagingDataSet.PageIndex - (numericPagingButtonCount / 2) <= 0) { startNumericPageIndex = 1; } else if (pagingDataSet.PageIndex + (numericPagingButtonCount / 2) > totalPages) { startNumericPageIndex = totalPages - numericPagingButtonCount + 1; } else { startNumericPageIndex = pagingDataSet.PageIndex - (numericPagingButtonCount / 2); } if (startNumericPageIndex < 1) { startNumericPageIndex = 1; } int lastNumericPageIndex = startNumericPageIndex + numericPagingButtonCount - 1; if (lastNumericPageIndex > totalPages) { lastNumericPageIndex = totalPages; } if (startNumericPageIndex > 1) { for (int i = 1; i < startNumericPageIndex; i++) { pagingButtonsHtml.AppendLine(); if (i > 3) { break; } if (i == 3) { pagingButtonsHtml.Append("<li><span class=\"\">...</span></li>"); } else { if (pagingDataSet.PageIndex == i) { pagingButtonsHtml.AppendFormat("<li class=\"active\"><a href=\"###\">{0}<span class=\"sr-only\">(current)</span></a></li>", i); } else { pagingButtonsHtml.AppendFormat("<li>{0}</li>", BuildLink(i.ToString(), GetPagingNavigateUrl(html, i, ajaxUrl), "Next")); } } } } for (int i = startNumericPageIndex; i <= lastNumericPageIndex; i++) { pagingButtonsHtml.AppendLine(); if (pagingDataSet.PageIndex == i) { pagingButtonsHtml.AppendFormat("<li class=\"active\"><a href=\"###\">{0}<span class=\"sr-only\">(current)</span></a></li>", i); } else { string navigateUrl = GetPagingNavigateUrl(html, i, ajaxUrl); string buildLink = BuildLink(i.ToString(), navigateUrl, "Next"); pagingButtonsHtml.AppendFormat("<li>{0}</li>", buildLink); } } if (lastNumericPageIndex < totalPages) { int lastStart = lastNumericPageIndex + 1; if (totalPages - lastStart > 2) { lastStart = totalPages - 2; } for (int i = lastStart; i <= totalPages; i++) { pagingButtonsHtml.AppendLine(); if ((i == lastStart) && (totalPages - lastNumericPageIndex > 3)) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.Append("<li><span class=\"\">...</span></li>"); continue; } if (pagingDataSet.PageIndex == i) { pagingButtonsHtml.AppendFormat("<li class=\"active\"><a href=\"###\">{0}<span class=\"sr-only\">(current)</span></a></li>", i); } else { pagingButtonsHtml.AppendFormat("<li>{0}</li>", BuildLink(i.ToString(), GetPagingNavigateUrl(html, i, ajaxUrl), "Next")); } } } } if (showNext) { pagingButtonsHtml.AppendLine(); if (pagingDataSet.PageIndex == totalPages) { pagingButtonsHtml.AppendFormat("<li class=\"disabled\"><a href=\"###\" aria-label=\"Previous\"><span aria-hidden=\"true\">{0}</span></a></li>", "»"); } else { pagingButtonsHtml.AppendFormat("<li>{0}</li>", BuildLink("»", GetPagingNavigateUrl(html, pagingDataSet.PageIndex + 1, ajaxUrl), "Next")); } } if (showLast) { if ((pagingDataSet.PageIndex < totalPages) && (totalPages > numericPagingButtonCount)) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat("<li>{0}</li>", BuildLink(">>", GetPagingNavigateUrl(html, totalPages, ajaxUrl), "Next")); } else if (pagingMode == PagingMode.NextPreviousFirstLast) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat("<li class=\"disabled\"><a href=\"###\" aria-label=\"Previous\"><span aria-hidden=\"true\">{0}</span></a></li>", ">>"); } } pagingButtonsHtml.Append("</ul>"); return(new HtmlString(pagingButtonsHtml.ToString())); }
/// <summary> /// 呈现普通分页按钮 /// </summary> /// <param name="paginationMode">分页按钮显示模式</param> /// <param name="html">被扩展的HtmlHelper</param> /// <param name="pagingDataSet">数据集</param> /// <param name="numericPagingButtonCount">数字分页按钮显示个数</param> /// <returns>分页按钮html代码</returns> public static IHtmlContent PagingButton(this IHtmlHelper html, IPagingDataSet pagingDataSet, PagingMode pagingMode = PagingMode.NumericNextPrevious, int numericPagingButtonCount = 7) { return(PagingButton(html, pagingDataSet, false, null, pagingMode, numericPagingButtonCount)); }
/// <summary> /// 呈现异步分页按钮 /// </summary> /// <param name="paginationMode">分页按钮显示模式</param> /// <param name="html">被扩展的HtmlHelper</param> /// <param name="pagingDataSet">数据集</param> /// <param name="updateTargetId">异步分页时,被更新的目标元素Id</param> /// <param name="numericPagingButtonCount">数字分页按钮显示个数</param> /// <returns>分页按钮html代码</returns> public static MvcHtmlString AjaxPagingButton(this HtmlHelper html, IPagingDataSet pagingDataSet, string updateTargetId, PaginationMode paginationMode = PaginationMode.NumericNextPrevious, int numericPagingButtonCount = 7, string ajaxUrl = null) { return PagingButton(html, pagingDataSet, true, updateTargetId, paginationMode, numericPagingButtonCount, ajaxUrl); }
/// <summary> /// 呈现分页按钮 /// </summary> /// <param name="html">被扩展的HtmlHelper</param> /// <param name="pagingDataSet">数据集</param> /// <param name="updateTargetId">异步分页时,被更新的目标元素Id</param> /// <param name="paginationMode">分页按钮显示模式</param> /// <param name="numericPagingButtonCount">数字分页按钮显示个数</param> /// <param name="enableAjax">是否使用ajax分页</param> /// <returns>分页按钮html代码</returns> private static MvcHtmlString PagingButton(this HtmlHelper html, IPagingDataSet pagingDataSet, bool enableAjax, string updateTargetId, PaginationMode paginationMode = PaginationMode.NumericNextPrevious, int numericPagingButtonCount = 7, string ajaxUrl = null) { if (pagingDataSet.TotalRecords == 0 || pagingDataSet.PageSize == 0) return MvcHtmlString.Empty; //计算总页数 int totalPages = (int)(pagingDataSet.TotalRecords / (long)pagingDataSet.PageSize); if ((pagingDataSet.TotalRecords % pagingDataSet.PageSize) > 0) totalPages++; //未超过一页时不显示分页按钮 if (totalPages <= 1) return MvcHtmlString.Empty; bool showFirst = false; if (paginationMode == PaginationMode.NextPreviousFirstLast) showFirst = true; bool showLast = false; if (paginationMode == PaginationMode.NextPreviousFirstLast) showLast = true; bool showPrevious = true; //if (paginationMode == PaginationMode.NextPrevious || paginationMode == PaginationMode.NextPreviousFirstLast || paginationMode == PaginationMode.NumericNextPrevious) // showPrevious = true; bool showNext = true; //if (paginationMode == PaginationMode.NextPrevious || paginationMode == PaginationMode.NextPreviousFirstLast || paginationMode == PaginationMode.NumericNextPrevious) // showNext = true; bool showNumeric = false; if (paginationMode == PaginationMode.NumericNextPrevious) showNumeric = true; //显示多少个数字分页按钮 //int numericPageButtonCount = 10; //对pageIndex进行修正 if ((pagingDataSet.PageIndex < 1) || (pagingDataSet.PageIndex > totalPages)) pagingDataSet.PageIndex = 1; string pagingContainer = "<div class=\"tn-pagination-btn\""; if (enableAjax) pagingContainer += " plugin=\"ajaxPagingButton\" data=\"" + HttpUtility.HtmlEncode(Json.Encode(new { updateTargetId = updateTargetId })) + "\""; pagingContainer += ">"; StringBuilder pagingButtonsHtml = new StringBuilder(pagingContainer); //构建 "首页" if (showFirst) { if ((pagingDataSet.PageIndex > 1) && (totalPages > numericPagingButtonCount)) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat(BuildLink("<<", GetPagingNavigateUrl(html, 1, ajaxUrl), "tn-page-first tn-page-thumb")); } else if (paginationMode == PaginationMode.NextPreviousFirstLast) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat("<span class=\"tn-page-first tn-page-thumb\">{0}</span>", "<<"); } } //回复:和苏工沟通了下,可能会调整标签结构及class名。但隔离开挺麻烦,暂时保留这个问题 //mazq回复:是否可以把html代码放入view,另外如果允许用户选择每页记录数如何处理? //构建 "上一页" if (showPrevious) { pagingButtonsHtml.AppendLine(); if (pagingDataSet.PageIndex == 1) pagingButtonsHtml.AppendFormat("<span class=\"tn-page-prev tn-page-thumb\">{0}</span>", "上一页"); else pagingButtonsHtml.AppendFormat(BuildLink("上一页", GetPagingNavigateUrl(html, pagingDataSet.PageIndex - 1, ajaxUrl), "tn-page-prev tn-page-thumb")); } //构建 数字分页部分 if (showNumeric) { int startNumericPageIndex; if (numericPagingButtonCount > totalPages || pagingDataSet.PageIndex - (numericPagingButtonCount / 2) <= 0) startNumericPageIndex = 1; else if (pagingDataSet.PageIndex + (numericPagingButtonCount / 2) > totalPages) startNumericPageIndex = totalPages - numericPagingButtonCount + 1; else startNumericPageIndex = pagingDataSet.PageIndex - (numericPagingButtonCount / 2); if (startNumericPageIndex < 1) startNumericPageIndex = 1; int lastNumericPageIndex = startNumericPageIndex + numericPagingButtonCount - 1; if (lastNumericPageIndex > totalPages) lastNumericPageIndex = totalPages; if (startNumericPageIndex > 1) { for (int i = 1; i < startNumericPageIndex; i++) { pagingButtonsHtml.AppendLine(); if (i > 3) break; if (i == 3) pagingButtonsHtml.Append("<span class=\"tn-page-break\">...</span>"); else { if (pagingDataSet.PageIndex == i) pagingButtonsHtml.AppendFormat("<span class=\"tn-page-number tn-selected\">{0}</span>", i); else pagingButtonsHtml.AppendFormat(BuildLink(i.ToString(), GetPagingNavigateUrl(html, i, ajaxUrl))); } } } for (int i = startNumericPageIndex; i <= lastNumericPageIndex; i++) { pagingButtonsHtml.AppendLine(); if (pagingDataSet.PageIndex == i) pagingButtonsHtml.AppendFormat("<span class=\"tn-page-number tn-selected\">{0}</span>", i); else pagingButtonsHtml.AppendFormat(BuildLink(i.ToString(), GetPagingNavigateUrl(html, i, ajaxUrl))); } if (lastNumericPageIndex < totalPages) { int lastStart = lastNumericPageIndex + 1; if (totalPages - lastStart > 2) lastStart = totalPages - 2; for (int i = lastStart; i <= totalPages; i++) { pagingButtonsHtml.AppendLine(); if ((i == lastStart) && (totalPages - lastNumericPageIndex > 3)) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.Append("<span class=\"tn-page-break\">...</span>"); continue; } if (pagingDataSet.PageIndex == i) pagingButtonsHtml.AppendFormat("<span class=\"tn-page-number tn-selected\">{0}</span>", i); else pagingButtonsHtml.AppendFormat(BuildLink(i.ToString(), GetPagingNavigateUrl(html, i, ajaxUrl))); } } } if (showNext) { pagingButtonsHtml.AppendLine(); if (pagingDataSet.PageIndex == totalPages) pagingButtonsHtml.AppendFormat("<span class=\"tn-page-thumb tn-page-next\">{0}</span>", "下一页"); else pagingButtonsHtml.AppendFormat(BuildLink("下一页", GetPagingNavigateUrl(html, pagingDataSet.PageIndex + 1, ajaxUrl), "tn-page-thumb tn-page-next")); } if (showLast) { if ((pagingDataSet.PageIndex < totalPages) && (totalPages > numericPagingButtonCount)) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat(BuildLink(">>", GetPagingNavigateUrl(html, totalPages, ajaxUrl), "tn-page-thumb tn-page-last")); } else if (paginationMode == PaginationMode.NextPreviousFirstLast) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat("<span class=\"tn-page-thumb tn-page-last\">{0}</span>", ">>"); } } pagingButtonsHtml.Append("</div>"); return MvcHtmlString.Create(pagingButtonsHtml.ToString()); }
/// <summary> /// 呈现普通分页按钮 /// </summary> /// <param name="paginationMode">分页按钮显示模式</param> /// <param name="html">被扩展的HtmlHelper</param> /// <param name="pagingDataSet">数据集</param> /// <param name="numericPagingButtonCount">数字分页按钮显示个数</param> /// <returns>分页按钮html代码</returns> public static MvcHtmlString PagingButton(this HtmlHelper html, IPagingDataSet pagingDataSet, PaginationMode paginationMode = PaginationMode.NumericNextPrevious, int numericPagingButtonCount = 7) { return PagingButton(html, pagingDataSet, false, null, paginationMode, numericPagingButtonCount); }
/// <summary> /// 呈现分页按钮 /// </summary> /// <param name="html">被扩展的HtmlHelper</param> /// <param name="pagingDataSet">数据集</param> /// <param name="updateTargetId">异步分页时,被更新的目标元素Id</param> /// <param name="paginationMode">分页按钮显示模式</param> /// <param name="numericPagingButtonCount">数字分页按钮显示个数</param> /// <param name="enableAjax">是否使用ajax分页</param> /// <returns>分页按钮html代码</returns> private static MvcHtmlString PagingButton(this HtmlHelper html, IPagingDataSet pagingDataSet, bool enableAjax, string updateTargetId, PaginationMode paginationMode = PaginationMode.NumericNextPrevious, int numericPagingButtonCount = 7, string ajaxUrl = null) { if (pagingDataSet.TotalRecords == 0 || pagingDataSet.PageSize == 0) { return(MvcHtmlString.Empty); } //计算总页数 int totalPages = (int)(pagingDataSet.TotalRecords / (long)pagingDataSet.PageSize); if ((pagingDataSet.TotalRecords % pagingDataSet.PageSize) > 0) { totalPages++; } //未超过一页时不显示分页按钮 if (totalPages <= 1) { return(MvcHtmlString.Empty); } bool showFirst = false; if (paginationMode == PaginationMode.NextPreviousFirstLast) { showFirst = true; } bool showLast = false; if (paginationMode == PaginationMode.NextPreviousFirstLast) { showLast = true; } bool showPrevious = true; //if (paginationMode == PaginationMode.NextPrevious || paginationMode == PaginationMode.NextPreviousFirstLast || paginationMode == PaginationMode.NumericNextPrevious) // showPrevious = true; bool showNext = true; //if (paginationMode == PaginationMode.NextPrevious || paginationMode == PaginationMode.NextPreviousFirstLast || paginationMode == PaginationMode.NumericNextPrevious) // showNext = true; bool showNumeric = false; if (paginationMode == PaginationMode.NumericNextPrevious) { showNumeric = true; } //显示多少个数字分页按钮 //int numericPageButtonCount = 10; //对pageIndex进行修正 if ((pagingDataSet.PageIndex < 1) || (pagingDataSet.PageIndex > totalPages)) { pagingDataSet.PageIndex = 1; } string pagingContainer = "<div class=\"tn-pagination-btn\""; if (enableAjax) { pagingContainer += " plugin=\"ajaxPagingButton\" data=\"" + HttpUtility.HtmlEncode(Json.Encode(new { updateTargetId = updateTargetId })) + "\""; } pagingContainer += ">"; StringBuilder pagingButtonsHtml = new StringBuilder(pagingContainer); //构建 "首页" if (showFirst) { if ((pagingDataSet.PageIndex > 1) && (totalPages > numericPagingButtonCount)) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat(BuildLink("<<", GetPagingNavigateUrl(html, 1, ajaxUrl), "tn-page-first tn-page-thumb")); } else if (paginationMode == PaginationMode.NextPreviousFirstLast) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat("<span class=\"tn-page-first tn-page-thumb\">{0}</span>", "<<"); } } //回复:和苏工沟通了下,可能会调整标签结构及class名。但隔离开挺麻烦,暂时保留这个问题 //mazq回复:是否可以把html代码放入view,另外如果允许用户选择每页记录数如何处理? //构建 "上一页" if (showPrevious) { pagingButtonsHtml.AppendLine(); if (pagingDataSet.PageIndex == 1) { pagingButtonsHtml.AppendFormat("<span class=\"tn-page-prev tn-page-thumb\">{0}</span>", "上一页"); } else { pagingButtonsHtml.AppendFormat(BuildLink("上一页", GetPagingNavigateUrl(html, pagingDataSet.PageIndex - 1, ajaxUrl), "tn-page-prev tn-page-thumb")); } } //构建 数字分页部分 if (showNumeric) { int startNumericPageIndex; if (numericPagingButtonCount > totalPages || pagingDataSet.PageIndex - (numericPagingButtonCount / 2) <= 0) { startNumericPageIndex = 1; } else if (pagingDataSet.PageIndex + (numericPagingButtonCount / 2) > totalPages) { startNumericPageIndex = totalPages - numericPagingButtonCount + 1; } else { startNumericPageIndex = pagingDataSet.PageIndex - (numericPagingButtonCount / 2); } if (startNumericPageIndex < 1) { startNumericPageIndex = 1; } int lastNumericPageIndex = startNumericPageIndex + numericPagingButtonCount - 1; if (lastNumericPageIndex > totalPages) { lastNumericPageIndex = totalPages; } if (startNumericPageIndex > 1) { for (int i = 1; i < startNumericPageIndex; i++) { pagingButtonsHtml.AppendLine(); if (i > 3) { break; } if (i == 3) { pagingButtonsHtml.Append("<span class=\"tn-page-break\">...</span>"); } else { if (pagingDataSet.PageIndex == i) { pagingButtonsHtml.AppendFormat("<span class=\"tn-page-number tn-selected\">{0}</span>", i); } else { pagingButtonsHtml.AppendFormat(BuildLink(i.ToString(), GetPagingNavigateUrl(html, i, ajaxUrl))); } } } } for (int i = startNumericPageIndex; i <= lastNumericPageIndex; i++) { pagingButtonsHtml.AppendLine(); if (pagingDataSet.PageIndex == i) { pagingButtonsHtml.AppendFormat("<span class=\"tn-page-number tn-selected\">{0}</span>", i); } else { pagingButtonsHtml.AppendFormat(BuildLink(i.ToString(), GetPagingNavigateUrl(html, i, ajaxUrl))); } } if (lastNumericPageIndex < totalPages) { int lastStart = lastNumericPageIndex + 1; if (totalPages - lastStart > 2) { lastStart = totalPages - 2; } for (int i = lastStart; i <= totalPages; i++) { pagingButtonsHtml.AppendLine(); if ((i == lastStart) && (totalPages - lastNumericPageIndex > 3)) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.Append("<span class=\"tn-page-break\">...</span>"); continue; } if (pagingDataSet.PageIndex == i) { pagingButtonsHtml.AppendFormat("<span class=\"tn-page-number tn-selected\">{0}</span>", i); } else { pagingButtonsHtml.AppendFormat(BuildLink(i.ToString(), GetPagingNavigateUrl(html, i, ajaxUrl))); } } } } if (showNext) { pagingButtonsHtml.AppendLine(); if (pagingDataSet.PageIndex == totalPages) { pagingButtonsHtml.AppendFormat("<span class=\"tn-page-thumb tn-page-next\">{0}</span>", "下一页"); } else { pagingButtonsHtml.AppendFormat(BuildLink("下一页", GetPagingNavigateUrl(html, pagingDataSet.PageIndex + 1, ajaxUrl), "tn-page-thumb tn-page-next")); } } if (showLast) { if ((pagingDataSet.PageIndex < totalPages) && (totalPages > numericPagingButtonCount)) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat(BuildLink(">>", GetPagingNavigateUrl(html, totalPages, ajaxUrl), "tn-page-thumb tn-page-last")); } else if (paginationMode == PaginationMode.NextPreviousFirstLast) { pagingButtonsHtml.AppendLine(); pagingButtonsHtml.AppendFormat("<span class=\"tn-page-thumb tn-page-last\">{0}</span>", ">>"); } } pagingButtonsHtml.Append("</div>"); return(MvcHtmlString.Create(pagingButtonsHtml.ToString())); }
/// <summary> /// 呈现异步分页按钮 /// </summary> /// <param name="paginationMode">分页按钮显示模式</param> /// <param name="html">被扩展的HtmlHelper</param> /// <param name="pagingDataSet">数据集</param> /// <param name="updateTargetId">异步分页时,被更新的目标元素Id</param> /// <param name="numericPagingButtonCount">数字分页按钮显示个数</param> /// <returns>分页按钮html代码</returns> public static MvcHtmlString AjaxPagingButton(this HtmlHelper html, IPagingDataSet pagingDataSet, string updateTargetId, PaginationMode paginationMode = PaginationMode.NumericNextPrevious, int numericPagingButtonCount = 7, string ajaxUrl = null) { return(PagingButton(html, pagingDataSet, true, updateTargetId, paginationMode, numericPagingButtonCount, ajaxUrl)); }
/// <summary> /// 呈现普通分页按钮 /// </summary> /// <param name="paginationMode">分页按钮显示模式</param> /// <param name="html">被扩展的HtmlHelper</param> /// <param name="pagingDataSet">数据集</param> /// <param name="numericPagingButtonCount">数字分页按钮显示个数</param> /// <returns>分页按钮html代码</returns> public static MvcHtmlString PagingButton(this HtmlHelper html, IPagingDataSet pagingDataSet, PaginationMode paginationMode = PaginationMode.NumericNextPrevious, int numericPagingButtonCount = 7) { return(PagingButton(html, pagingDataSet, false, null, paginationMode, numericPagingButtonCount)); }