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=\"#\"><img id=\"queding\" src=\"../../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=\"" + url1 + "\">首页</a> ";

            //}

            if (currentPageIndex > 1)

            {

                string url1 = string.Format(url.ToString(), currentPageIndex - 1);

                HtmlStr += "<a href=\"" + 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=\"" + url1 + "\">下一页</a> ";

            }

            else

                HtmlStr += "<span class=\"pageNum\">下一页</span> ";



            //if (currentPageIndex == pageCount)

            //    HtmlStr += "末页 ";

            //else

            //{

            //    string url1 = string.Format(url.ToString(), pageCount);

            //    HtmlStr += "<a href=\"" + 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=\"" + 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)