• 自己写一个分页PageHelper


    每次写分页导航的时候都要在html页面写一堆标签和样式,太麻烦了,所以干脆自己动手封装一个自己喜欢的类直接生成。

    一、PageHelper类:

     /// <summary>
            /// 分页导航
            /// </summary>
            /// <param name="pageNum">当前第几页</param>
            /// <param name="pageNumSum">总页数</param>
            /// <param name="url">显示的url</param>
            /// <param name="p">分页参数名</param>
            /// <param name="linCount">显示多少页</param>
            /// <returns></returns>
            public static string page(int pageNum, int pageNumSum, string url, string p, int linCount)
            {
                if (pageNum < 1) pageNum = 1;
                if (pageNum > pageNumSum) pageNum = pageNumSum;
                // a的样式 
                string aStyle = "text-decoration:none;border:1px solid #075DB3;box-sizing:border-box;margin:0  2px;padding:2px 5px;font-size:12px;";
                StringBuilder sb = new StringBuilder();
                sb.AppendLine(string.Format("<div style='text-align:center;margin-bottom:30px;'>第<span style='color:#00ff21'>{0}</span>/{1} 页", pageNum, pageNumSum));
                sb.AppendLine(string.Format(" <a style='{0}' href='{1}?{2}={3}'>上一页</a>", aStyle, url, p, pageNum - 1 < 1 ? 1 : pageNum - 1));
                //设开始页为1
                int beginPage = 1;
                //中间页为 linCount/2
                int midPage = linCount / 2;
                if (pageNum > midPage)
                {
                    beginPage = pageNum - midPage;
                }
                for (int i = 0; i < linCount; i++)
                {
                    //当前页不加链接
                    if (pageNum == beginPage + i)
                    {
                        sb.AppendLine(string.Format("<span style='display: inline-block;10px;'></span>{0}<span style='display: inline-block;10px;'></span>", beginPage + i));
                    }
                    else
                    {
                        sb.AppendLine(string.Format("<a style='{0}' href='{1}?{2}={3}'>{3}</a>", aStyle, url, p, beginPage + i));
                    }
                    //如果后面的页数大于总页数,退出循环
                    if (beginPage + i >= pageNumSum)
                    {
                        break;
                    }
    
                }
                sb.AppendLine(string.Format(" <a style='{0}' href='{1}?{2}={3}'>下一页</a>", aStyle, url, p, pageNum + 1 >= pageNumSum ? pageNumSum : pageNum + 1));
                sb.Append("</div>");
                return sb.ToString();
            }

    二、演示

     这是在一个mvc项目中做的演示

       action :

     public ActionResult Index(string page)
            {
                //1.获得当前页数
                int pageNum = 1;//默认第一页
                if(page!=null)
                pageNum = Convert.ToInt32(page);  //一些判断是否为int或者是否<0大于最大页数这里不做判断,主要演示分页效果
                //2.总页数-- 查询数据库得到总条数再计算得到总页数
                int pageNumSum = 18;//假设计算得到结果为18页
                string url = "/Demo/Index"; //当前url
                //要显示多少页
                int pageList = 5;//假设看到5页
                //mvc要 MvcHtmlString 进行生成html码,不然会是一个字符串
                ViewBag.page = new MvcHtmlString(PageHelper.page(pageNum, pageNumSum, url, "page", pageList));
                return View();
               
            }

    view:

    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
        <style type="text/css">
            p {
            text-align:center;
            color:#00ff21;
            }
        </style>
    </head>
    <body>
        <p>列表内容</p>
          <p>列表内容</p>
          <p>列表内容</p>
          <p>列表内容</p>
          <p>列表内容</p>
        <div>
            @ViewBag.page
        </div>
    </body>
    </html>

    效果:

    后言:当然这主要是说一个方法,如果觉得这个不好看,你可以自己写多几个自己喜欢的分页效果类,想用哪个就调用哪个的。

  • 相关阅读:
    SOLO: 按位置分割对象
    支付宝架构
    h264和h265多维度区别
    机器学习图解
    机器视觉系统性能
    APA自动泊车系统
    智能驾驶测距估计
    结构感知图像修复:ICCV2019论文解析
    Lambda表达式
    转:利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符
  • 原文地址:https://www.cnblogs.com/wei325/p/5241162.html
Copyright © 2020-2023  润新知