分页查询(一)——真假分页学习
来源:互联网 发布:淘宝怎么办理换货 编辑:程序博客网 时间:2024/04/29 21:03
在做ITOO项目中,经常会涉及到表格,这个时候我们会用到分页。
一、真假分页比较
假分页:从数据库中取出所有的数据,然后分页在界面上显示。访问一次数据库,但由于选择的数据量比较大,所以第一次花费时间比较长,但之后每一页的显示都是直接、快速的,避免对数据库的多次访问。
真分页:确定要显示的数量和内容,然后每次都去数据库取出该少量数据,优点是数据量小,缺点是访问数据库频繁。在大型网站 中往往采用真分页,比如百度的图片获取。
(ps:一般来说,我在ITOO看看查询数据库方法时候有没有pageSize等参数,一般有的话就是真分页,吼吼……)
二、后台代码分析
//假分页代码
<script> function pagerFilter(data) { if (typeof data.length == 'number' && typeof data.splice == 'function') { // 判断数据是否是数组 data = { total: data.length, rows: data } } var dg = $(this); var opts = dg.datagrid('options'); var pager = dg.datagrid('getPager'); pager.pagination({ onSelectPage: function (pageNum, pageSize) { opts.pageNumber = pageNum; opts.pageSize = pageSize; pager.pagination('refresh', { pageNumber: pageNum, pageSize: pageSize }); dg.datagrid('loadData', data); } }); if (!data.originalRows) { data.originalRows = (data.rows); } var start = (opts.pageNumber - 1) * parseInt(opts.pageSize); var end = start + parseInt(opts.pageSize); data.rows = (data.originalRows.slice(start, end)); return data; } $(function () {//加载数据 $('#tt2').datagrid({ loadFilter: pagerFilter }).datagrid('loadData', getData()); }); </script>
//真分页页面代码
Controller
public ActionResult QueryAllTemplate() { int pageSize=int.Parse(Request.Params["rows"].ToString()); int pageIndex=int.Parse(Request.Params ["page"].ToString()); int total=0; IexamtemplatemainServiceBll IexamtemplatemainServiceBll = SpringHelper.GetObject<IexamtemplatemainServiceBll>("examtemplatemainServiceBll"); List<t_examtemplatemain> t = IexamtemplatemainServiceBll.QueryExamTemplateMain( pageSize, pageIndex, out total); var data = new { total, rows = t }; return Json(data, JsonRequestBehavior.AllowGet); //JavaScriptSerializer serializer = new JavaScriptSerializer(); //string strJson = serializer.Serialize(t); //return strJson; }
B层代码
/// <summary> /// 查询课所有模板信息 /// </summary> /// <returns>list集合</returns> public List<t_examtemplatemain> QueryExamTemplateMain(int pageSize, int pageIndex, out int total) { List<t_examtemplatemain> t_examtemplatemain = new List<t_examtemplatemain>(); t_examtemplatemain = this.CurrentDal.LoadPageItems(pageSize, pageIndex, out total, u => u.CourseID, true).ToList(); return t_examtemplatemain; }
三、总结
就像师哥说的:二者其实各有各的优缺点,可根据需要来选择。(比如数据量较多时,用真分页;想减少与后台的交互,可以使用假分页)。
假分页,如果数据量较多,在首次页面加载的时候会比较慢,严重影响用户体验,Web开发和搜索引擎优化。真分页的效率无疑是最高的,它还有很多的优点:
1.每次点击下一页,客户端访问服务器的时间基本一样,提高用户体验,更加的人性化。
2.对于大数据量可以从容的面对。
缺点:与后台的交互次数增多。
感觉师哥博客写的比我好多了:
http://blog.csdn.net/jiuqiyuliang/article/details/18009515
1 0
- 分页查询(一)——真假分页学习
- JAVA学习笔记_真假分页查询
- ASP.NET真假分页—假分页
- ASP.NET真假分页—真分页
- ASP.NET真假分页—假分页
- ASP.NET真假分页—真分页
- 牛腩新闻发布系统(6)——真假分页
- ASP.NET——真假分页
- 【牛腩】——ASP.NET真假分页
- 新闻系统——真假分页
- 真假分页
- 真假分页
- LigerUI真假分页以及过滤查询功能
- LigerUI真假分页以及过滤查询功能
- 牛腩新闻发布系统——真假分页
- Oracle学习—数据库分页查询
- Web之真假分页
- 【牛腩】真假分页
- sdWebImage缓存替换
- 修改linux时间和日期——date和clock
- 我的25年嵌入式生涯-周立功
- 在Ubuntu中,使用minicom抓串口log
- 动态加载:ViewPager数量
- 分页查询(一)——真假分页学习
- 安卓Service的开启方式
- 吴晓培 2012.6.21 C/S-单播-线程
- Quartz2D 简单介绍及应用(图片裁剪)
- 利用Oracle SQL Developer创建database link数据库连接
- Nvidia回应Linux之父的指责 坚持不做任何让步
- python 使用微信远程控制电脑
- 关于安卓开发theme样式style中三个重要颜色colorPrimary、colorPrimaryDark、colorAccent
- 【dotnet跨平台】关于VS Code扩展和主题市场