首页 > 代码库 > asp.net mvc 的几种分页Pager

asp.net mvc 的几种分页Pager

   第一种   /// <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();        }第二个using System.Collections.Generic;using System.Linq;using System.Web;using System.Text;using System.Collections.Specialized;using System.Web.Routing;namespace System.Web.Mvc{    public static class PagerHelper    {        ///         /// 分页        ///         ///         /// 分页id        /// 当前页        /// 分页尺寸        /// 记录总数        /// 分页头标签属性        /// 分页样式        /// 分页模式        ///         public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, object htmlAttributes, string className, PageMode mode)        {            TagBuilder builder = new TagBuilder("div");            builder.IdAttributeDotReplacement = "_";            builder.GenerateId(id);            builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));            builder.InnerHtml = GetNormalPage(helper, currentPageIndex, pageSize, recordCount, mode);            return builder.ToString(TagRenderMode.Normal);        }        ///         /// 分页        ///         ///         /// 分页id        /// 当前页        /// 分页尺寸        /// 记录总数        /// 分页样式        ///         public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, string className)        {            return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, className, PageMode.Normal);        }        ///         /// 分页        ///         ///         /// 分页id        /// 当前页        /// 分页尺寸        /// 记录总数        ///         public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount)        {            return Pager(helper, id, currentPageIndex, pageSize, recordCount, null);        }        ///         /// 分页        ///         ///         /// 分页id        /// 当前页        /// 分页尺寸        /// 记录总数        /// 分页模式        ///         public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, PageMode mode)        {            return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, mode);        }        ///         /// 分页        ///         ///         /// 分页id        /// 当前页        /// 分页尺寸        /// 记录总数        /// 分页样式        /// 分页模式        ///         public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, string className, PageMode mode)        {            return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, className, mode);        }        ///         /// 获取普通分页        ///         ///         ///         ///         ///         private static string GetNormalPage(this HtmlHelper helper, int currentPageIndex, int pageSize, int recordCount, PageMode mode)        {            int pageCount = (recordCount % pageSize == 0 ? recordCount / pageSize : recordCount / pageSize + 1);            string url = HttpContext.Current.Request.Url.AbsolutePath + "?page={0}";            string HtmlStr = string.Empty;            NameValueCollection collection = HttpContext.Current.Request.QueryString;            string[] keys = collection.AllKeys;            for (int i = 0; i < keys.Length; i++)            {                if (keys[i].ToLower() != "page")                    url += "&" + keys[i] + "=" + collection[keys[i]] + "";            }            HtmlStr += "<div class=\"right maunlist\" style=\"width: 520px; float:right;\">";            HtmlStr += "<div class=\"left manur\" style=\"float:right\">";            HtmlStr += "<div class=\"manudisableda\">到第</div>";            HtmlStr += "<div class=\"manudisableda\"><input name=\"\" type=\"text\" id=\"page\" style=\"width:40px; margin-top:2px\"/></div>";            HtmlStr += "<div class=\"manudisableda\">页</div><div class=\"manudisableda\"><a href=http://www.mamicode.com/"#\"><img id=\"queding\" src=http://www.mamicode.com/"../../list_img/OKBTN.jpg\" width=\"70\"  height=\"24\" /></a></div></div>";           // HtmlStr += "<tr><td>总共" + recordCount + "条记录,共" + pageCount + "页,当前第" + currentPageIndex + "页  </td>";            HtmlStr += "<div class=\"left manuleft\" style=\"float:right;\">";            //if (currentPageIndex == 1)            //    HtmlStr += "<a>首页</a> ";            //else            //{            //    string url1 = string.Format(url.ToString(), 1);            //    HtmlStr += "<a href=http://www.mamicode.com/"" + url1 + "\">首页</a> ";            //}            if (currentPageIndex > 1)            {                string url1 = string.Format(url.ToString(), currentPageIndex - 1);                HtmlStr += "<a href=http://www.mamicode.com/"" + url1 + "\">上一页</a> ";            }            else                HtmlStr += "<span class=\"pageNum\">上一页</span> ";            if (mode == PageMode.Numeric)                HtmlStr += GetNumericPage(currentPageIndex, pageSize, recordCount, pageCount, url.ToString());            if (currentPageIndex < pageCount)            {                string url1 = string.Format(url.ToString(), currentPageIndex + 1);                HtmlStr += "<a href=http://www.mamicode.com/"" + url1 + "\">下一页</a> ";            }            else                HtmlStr += "<span class=\"pageNum\">下一页</span> ";            //if (currentPageIndex == pageCount)            //    HtmlStr += "末页 ";            //else            //{            //    string url1 = string.Format(url.ToString(), pageCount);            //    HtmlStr += "<a href=http://www.mamicode.com/"" + url1 + "\">末页</a> ";            //}            HtmlStr += "</div>";                        HtmlStr += "</div>";            return HtmlStr.ToString();        }        ///         /// 获取数字分页        ///         ///         ///         ///         ///         ///         ///         private static string GetNumericPage(int currentPageIndex, int pageSize, int recordCount, int pageCount, string url)        {            int page = 5;                        int count = pageCount % page == 0 ? pageCount / page : (pageCount / page + 1);            int k = currentPageIndex / page;            int m = currentPageIndex % page;            string sbhtml = string.Empty;            //当前在第几个分页上            int index = currentPageIndex % page == 0 ? currentPageIndex / page : (currentPageIndex / page + 1);            if (index != 1)            {                sbhtml += "<span>...</span>";            }            if (currentPageIndex / page == pageCount / page)            {                if (m == 0)                {                    k--;                    m = page;                }                else                    m = pageCount % page;            }            else                if (m == 0)                {                    k--;                    m = page;                }                else                {                    m = 5;                }            for (int i = k * page + 1; i <= k * page + m; i++)            {                if (i == currentPageIndex)                    sbhtml += "<font class=\"pagertion\">" + string.Format("{0} ", i) + "</font>";                else                {                    string url1 = string.Format(url.ToString(), i);                    sbhtml += "<a href=http://www.mamicode.com/"" + url1 + "\">" + string.Format("{1} ", url1, i) + "</a>";                                    }                                           }            if (count > 1)            {                if (index < count)                {                    sbhtml += "<span>...</span>";                }            }            return sbhtml.ToString();        }    }    ///     /// 分页模式    ///     public enum PageMode    {        ///         /// 普通分页模式        ///         Normal,        ///         /// 普通分页加数字分页        ///         Numeric    }}

 

asp.net mvc 的几种分页Pager