分页

作者: 凌雲木 | 来源:发表于2018-04-23 13:13 被阅读10次

SqlServer分页:
select * from 表 order by id OFFSET PageIndex*pagenum ROWS FETCH next pagenum rows only

MySql分页:
select * from 表 表名称 WHERE id_pk > (pageNum*10) ORDER BY id_pk ASC LIMIT M

1 在网页中对显示的信息进行分页,需要确定的参数分为向后台传递的参数和从后台接受的参数。
向后台传递的参数:
1)当前的页面显示的是哪一页的信息即当前页数 pageIndex
2)页面上每页要显示的信息数据的大小即pageIndex
只有确定向后台发送要显示的信息数据的是第几页和每页的含有信息大小,后台才能通过业务逻辑确定返回给前台的信息数据。
从后台接收的参数:
1)由pageIndex和pageIndex确定的信息
2)分页标签(非必须,在这里我采用分页标签由后台传递)

2 代码
1) 前台

 <script type="text/javascript">
          $(function () {
              initTable();
          });
          //初始化表格
          function initTable(postData) {
              $.getJSON("BookInfoListLoad.ashx", postData, function (data) {
                  $("#AddDiv").html("");
                  for (var i in data.NewsList) {
                      var strTr = '<table style="border-bottom: 1px solid red;" id="tbBody"> <tbody><tr>';
                      strTr += '<td rowspan="2"><img style="CURSOR: hand" height="121" alt="' + data.NewsList[i].Title + ' " hspace="4" src="' + data.NewsList[i].ImgTitle + '" width="95"></td> ';
                      strTr += ' <td style="FONT-SIZE: small; COLOR: red" width="650"><a class="booktitle" id="link_prd_name" href="/' + Math.floor( data.NewsList[i].Bid/5000)  + '/' + data.NewsList[i].Bid + '.html" " target="_blank"  name="link_prd_name">"' + data.NewsList[i].Title + '"</a> </td> </tr>';
                      strTr += '<tr> <td align="left"><span style="FONT-SIZE: 12px; LINE-HEIGHT: 20px">"' + data.NewsList[i].Author + '"</span><br> <br>  <span  style="FONT-SIZE: 12px; LINE-HEIGHT: 20px">"' + data.NewsList[i].TitleHot + '"</span> </td> </tr>';
                      strTr += '<tr>  <td align="right" colspan="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 13px; LINE-HEIGHT: 20px">&yen;原价:</span> </td>';
                      strTr += '<td align="right" colspan="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 13px; LINE-HEIGHT: 20px">"' + data.NewsList[i].PriceOld + '"</span> </td>';
                      strTr += '<td align="right" colspan="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 13px; LINE-HEIGHT: 20px">现:</span> </td>';
                      strTr += '<td align="right" colspan="2"><span style="FONT-WEIGHT: bold; FONT-SIZE: 13px; LINE-HEIGHT: 20px">"' + data.NewsList[i].PriceNew + '" </span> </td>';
                      strTr += ' </tr> </tbody> </table>';                                           
                      $("#AddDiv").append(strTr);
                  }
                  //把分页的标签放到页面里面去
                  $("#navDiv").html(data.NavHtml);

                  //给分页的超级链接绑定点击事件
                  $(".pageLink").click(function () {
                      var href = $(this).attr("href");
                      var queryString = href.substr(href.lastIndexOf('?') + 1);
                      initTable(queryString);
                      return false;
                  });
              });
          }
    </script>
    <div id="AddDiv">
    </div>        
    <div id="navDiv">         
        </div> 

2)

public class BookInfoListLoad : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            int pageSize = int.Parse(context.Request["pageSize"] ?? "10");
            int pageIndex = int.Parse(context.Request["pageIndex"] ?? "1");
            int total = 0;


            context.Response.ContentType = "text/plain";
            BLL.BookInfo mainService = new BLL.BookInfo();

           
            #region //拿到当前页的数据
           // List<Model.BookInfo> list = mainService.LodePageData(pageIndex, pageSize, out total);
            DataTable dt=    mainService.GetListByPage("", "", (pageIndex - 1) * pageSize + 1, pageSize * pageIndex).Tables[0];
             List<Model.BookInfo> list1 =  mainService.DataTableToList(dt);
           //int  rowCount = mainService.GetRecordCount("");// Convert.ToInt32(Math.Ceiling(rowsCount * 1.0 / pageSize));
             total = mainService.GetRecordCount("");
            #endregion

            string navStrHtml = Common.showPage.ShowPageNavigate(pageSize, pageIndex, total);
            System.Web.Script.Serialization.JavaScriptSerializer scriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            var jsonStr = scriptSerializer.Serialize(new { NewsList = list1, NavHtml = navStrHtml });

            context.Response.Write(jsonStr);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

附1:

 public  class showPage
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pageSize">一页多少条</param>
        /// <param name="currentPage">当前页</param>
        /// <param name="totalCount">总条数</param>
        /// <returns></returns>
        public static string ShowPageNavigate(int pageSize, int currentPage, int totalCount)
        {
            string redirectTo = "";
            pageSize = pageSize == 0 ? 3 : pageSize;
            var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
            var output = new StringBuilder();
            if (totalPages > 1)
            {
                if (currentPage != 1)
                {//处理首页连接
                    output.AppendFormat("<a class='pageLink' href='{0}?pageIndex=1&pageSize={1}'>首页</a> ", redirectTo, pageSize);
                }
                if (currentPage > 1)
                {//处理上一页的连接
                    output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>上一页</a> ", redirectTo, currentPage - 1, pageSize);
                }
                else
                {
                    // output.Append("<span class='pageLink'>上一页</span>");
                }

                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));
                            output.AppendFormat("<a class='cpb' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage, pageSize, currentPage);
                        }
                        else
                        {//一般页处理
                            output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>{3}</a> ", redirectTo, currentPage + i - currint, pageSize, currentPage + i - currint);
                        }
                    }
                    output.Append(" ");
                }
                if (currentPage < totalPages)
                {//处理下一页的链接
                    output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>下一页</a> ", redirectTo, currentPage + 1, pageSize);
                }
                else
                {
                    //output.Append("<span class='pageLink'>下一页</span>");
                }
                output.Append(" ");
                if (currentPage != totalPages)
                {
                    output.AppendFormat("<a class='pageLink' href='{0}?pageIndex={1}&pageSize={2}'>末页</a> ", redirectTo, totalPages, pageSize);
                }
                output.Append(" ");
            }
            output.AppendFormat("第{0}页 / 共{1}页", currentPage, totalPages);//这个统计加不加都行
            return output.ToString();
        }
    }

相关文章

  • MyBatis之分页

    五、分页 目录:使用Limit分页、RowBounds分页、分页插件 1.使用Limit分页 语法: 使用MyBa...

  • JS的分页算法

    分页的总页数算法 分页算法 分页存储过程或者页面分页中的分页算法: int pagesize // 每页记录数 i...

  • WEB页面中几种常见的分页样式

    这里谈谈WEB页面中几种常见的分页样式 分页样式一:滚动翻页image 分页样式二:常规分页image 分页样式三...

  • 目录【Java分页(前台+后台)】

    SubList分页-001-分页概述 SubList分页-002-需求 SubList分页-003-中文处理 Su...

  • SSM框架-实现Mybatis分页功能-foreknow_cms

    分页处理 分页1、前台分页2、数据库(后台)分页3、存储过程 Orade (Rownum) Mysql(lim...

  • 2018-10-10:分页

    分页 真分页使用特定的sql语句,条件查询出指定内容 假分页数据全部取出,在页面分页显示 分页数据pageSize...

  • Springboot 分页

    //分页返回类 @ApiModel(value ="分页内容", description ="分页数据返回内容")...

  • 分页SQL

    分页 rownum,rowid 分页SQL

  • Java Web 之分页技术

    本文包括:1、分页技术概述2、实现分页3、完善分业——分页工具条4、几种常见的分页工具条 1、分页技术概述 物理分...

  • 代码CR之分页查询常见问题

    分页查询常见问题: 1.完全没有分页 2.分页size太大 3.超多分页慢SQL 1.完全没有分页 反例: 正例:...

网友评论

      本文标题:分页

      本文链接:https://www.haomeiwen.com/subject/timklftx.html