• 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 
  • 相关阅读:
    CodeForces-1263D Secret Passwords 并查集 求连通分量
    Virtual Friends HDU
    AreYouBusy HDU
    Jack Straws POJ
    Divisibility by 25 CodeForces
    逃离迷宫 HDU
    Find a way HDU
    Stall Reservations POJ
    Three displays CodeForces
    Radar Installation POJ
  • 原文地址:https://www.cnblogs.com/5tomorrow/p/10451403.html
Copyright © 2020-2023  润新知