迷迷糊糊的真假分页

【前言】

关于真分页和假分页这个知识是从敲牛腩新闻发布系统的时候,但是一直是迷迷糊糊的,只是大致的了解,今天就来总结一下。

【分页简介】

当我们显示足够大的数据量时,所有数据都显示在一页上,会造成很多麻烦,本着人性化的角度,我们采用分页显示的处理办法,分页主要分为真分页和假分页。

(假分页)

在运行查询的时候,就把全部的数据都查询出来,之后再跳转页面的时候就不需要进行查询了。

(1)优点:仅仅查询一次数据库,减少了与后台的交互。

(2)缺点:当数据量足够多时查询速度比较慢,用户体验度降低。

(真分页)

在运行查询操作的时候,仅仅查询所显示当前页面的内容进行显示,之后的跳转页面也都需要查询数据库取相应的数据。例如百度就采用的真分页。

(1)优点:查询速度快,用户体验度高。

(2)缺点:页面跳转速度较假分页慢。

下面就介绍一下用的比较多的真分页。

【代码】

(前台代码)

 dataType: 'json',
                    width: "100%", //宽度
                    striped: true, //把行条纹化(奇偶行背景色不同)
                    loadMsg: '正在加载信息.......', //从远程站点加载数据是,显示的提示消息
                    pagination: true, //数据网格底部显示分页工具栏
                    singleSelect: true, //只允许选中一行
                    pageList: [10, 20, 30, 40, 50], //设置每页记录条数的列表
                    pageSize: 10, //初始化页面尺寸(默认分页大小)
                    pageNumber: 1, //初始化页面(默认显示第一页)
                    beforePageText: '第', //页数文本框前显示的汉字 
                    afterPageText: '页 共 {pages} 页',
                    displayMsg: '第{from}到{to}条,共{total}条',
                    columns: [[ //每页具体内容

                    { field: 'Serial', title: '序号', width: "5%", align: 'center', editor: 'text', hidden: true },
                    { field: 'ItemNo', title: '商品编号', width: "9%", align: 'center', hidden: true },
                    { field: 'UserName', title: '借用人', width: "10%", align: 'center', editor: 'text' },
                    { field: 'ReturnDate', title: '归还日期', width: "10%", align: 'center', editor: 'text', formatter: changeDateFormat },
                    { field: 'StorageName', title: '仓库名称', width: "10%", align: 'center' },
                   { field: 'operatorColumn', title: '操作列', width: "11%", align: 'center', editor: 'text', formatter: editDelete1 },

                    ]]

(controler代码)

//获得表格条数和当前页数
               int pageCount = Request["rows"] == null ? 10 : int.Parse(Request["rows"]);
               int pageSize = Request["page"] == null ? 1 : int.Parse(Request["page"]);
               //初始化总条数为0
               int total = 0;
                List<V_Approval> list = iexaminebll.approval(op, pageCount, pageSize, out total);
               return Json(new { rows = list, total });

(D层代码)

    public List<V_Approval> approval(string op, int pageCount, int pageSize, out int total)
        {
          
            //设置分页开始记录和结果记录
            int begin = (pageSize - 1) * pageCount;
            string sql="";
             //真分页要显示的数据
            string sqldt = sql + " limit " + begin + "," + pageCount;
            //查询出所有的数据
            string sqlCount = sql;
            DataTable dt = MySQLHelper.ExecuteDataTable(sqldt);
            DataTable dtCount = MySQLHelper.ExecuteDataTable(sqlCount);
            List<V_Approval> listCount = DatatableToList.ConvertToList<V_Approval>(dtCount);
            total = listCount.Count;
            return DatatableToList.ConvertToList<V_Approval>(dt);
 D层要执行2次操作,分别是查询出来所有的数据显示,还有就是显示本页查询的记录。

【感受】

以前都是迷迷糊糊的,现在再问我这个问题我也能说出个一二三来了,原理懂了其他的就好说了。

【总结】

真分页是只从数据库拿到当前页的记录;假分页是从数据库拿到所有记录只显示当前页的。(ps这是豪哥说的,很对哦)以后别人再问关于真假分页的区别就很简单了。


猜你喜欢

转载自blog.csdn.net/ningmengbaby/article/details/79565044
今日推荐