示例#1
0
        /// <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());
        }
示例#2
0
        /// <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()));
        }
示例#3
0
        /// <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>&nbsp;共&nbsp;", endCount);
            builder.InnerHtml.AppendFormat("<span>{0}</span>&nbsp;条", pagingDataSet.TotalRecords);
            var writer = new StringWriter();

            builder.WriteTo(writer, HtmlEncoder.Default);
            return(new HtmlString(writer.ToString()));
        }
示例#4
0
        /// <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("&lt;&lt;", 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>", "&lt;&lt;");
                }
            }


            //构建 "上一页"
            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("&gt;&gt;", 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>", "&gt;&gt;");
                }
            }
            pagingButtonsHtml.Append("</ul>");
            return(new HtmlString(pagingButtonsHtml.ToString()));
        }
示例#5
0
 /// <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));
 }
示例#6
0
 /// <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);
 }
示例#7
0
        /// <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("&lt;&lt;", 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>", "&lt;&lt;");
                }
            }

            //回复:和苏工沟通了下,可能会调整标签结构及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("&gt;&gt;", 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>", "&gt;&gt;");
                }
            }
            pagingButtonsHtml.Append("</div>");
            return MvcHtmlString.Create(pagingButtonsHtml.ToString());
        }
示例#8
0
 /// <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);
 }
示例#9
0
        /// <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("&lt;&lt;", 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>", "&lt;&lt;");
                }
            }


            //回复:和苏工沟通了下,可能会调整标签结构及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("&gt;&gt;", 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>", "&gt;&gt;");
                }
            }
            pagingButtonsHtml.Append("</div>");
            return(MvcHtmlString.Create(pagingButtonsHtml.ToString()));
        }
示例#10
0
 /// <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));
 }
示例#11
0
 /// <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));
 }