zoukankan      html  css  js  c++  java
  • 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=" 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="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
        }
    }
  • 相关阅读:
    Android WebView常见问题及解决方案汇总【很全很实用】
    adb shell dumpsys meminfo [packagename] 输出内容的含义
    Android关于RAM、ROM、SD卡以及各种内存的区别
    每天5分钟玩转容器技术 整理目录
    ubuntu16.04基本设置
    ubuntu镜像快速下载
    vSphere 5.5.0 U1配置问题:主机的快速统计信息不是最新的(转载)
    Vcenter server 5.5安装部署
    SQL Server 2008 R2 数据库安装
    Centos7.3搭建DNS服务器--BIND
  • 原文地址:https://www.cnblogs.com/yiliuyang/p/4252710.html
Copyright © 2011-2022 走看看