新闻发布系统之浅谈分页技术
我们今天生活在一个大数据时代,数据量成指数增长。在我们的网页检索数据是往往会检索到太多的数据,但是我们的网页大小又是有限的不能一次性把所有的数据都显示出来,为此分页技术的诞生变得尤为的重要。我在开发一个新闻发布系统的时候,分页技术也是必须的。所以今天我们来简单谈谈一些我们最常用的简单的分页技术。
从分页的方式分,分页技术分为两种,真分页与假分页。那么又什么是个真分页呢?真分页,是指从数据库中每次只检索当前页面所要显示的数据,其他的数据则在其他页面加载时才检索。而假分页,则是从数据库中一次性检索出所有符合条件的数据放入内存,然后再分页显示。简言之,假分页是多次分页检索并显示;真分页,是一次检索,分页显示。那么它们两者又到底谁优,谁劣呢?其实两者各有各的强项。如果,我们检索的数量不大时,假分页就比较占优势了,效率就比真分页要高了。而数据量很大时,则假分页就有些力不从心了,一则检索速度很慢,二则消耗内存资源太多,会大大的降低效率,而真分页则可以很好的解决这个问题。具体原因,很简单,我就不在这里赘述了,大家自己思考。下面具体的我们以几个小例子来说明一下。
在讲分页例子前,我们先来看几个常见的页面数据显示控件,因为我们所有的分页技术必须得配合这些控件才能实现。
Repeater,这个是最基本的数据集绑定显示控件。不支持分页,但是它的效率很高。
DataList ,比Repeater功能要复杂一点,但是也不支持分页。
GridView(DataGrid) ,支持分页,功能最强大,但是也是效率最低的一个。
当然,也可以写自己的分页控件,或者包装一个现有的。
假分页
最典型的例子就是GridView控件实现的分页技术。GridView控件自身就支持分页技术,它早已分页技术的一些方法,属性,事件替我们封装好了,只须我们简单的设置一下它的几个属性,利用它已经封装好的方法,事件,就可以搞定。PageSize属性是GridView控件分页时显示的记录条数,PageIndex属性是指每个分页的索引值,设置了这两个属性,再配上下面的代码就可以实现我们可以的分页效果了。
真分页
在这里举得这个例子,我是利用自定义ASP.net控件配合数据库存储过程来实现的。先封装好ASP.ne控件,然后编译成Dll文件,这样就可以拖入我们的界面使用了(这样我们可以在多处复用我们的该控件。为了方便,这里有我编译好的ASPNetPage,下载到本地添加到VS中的工具箱,拖入界面就可以使用,当然了,网上有关类似这样的控件有很多很多)。接下来就是,编写我们的数据库存储过程了。下面是我编写的存储过程的脚本。
<span style="font-size:18px;">-- =============================================-- Author: Gelupu-- Create date: 2014-6-20 15:52:08-- Description: 以分页的形式取出所有新闻-- =============================================ALTERprocedure [dbo].[NewsSelectAll](@pagesize int,@pageindexint,@docountbit)asif(@docount=1)selectcount(*) from Newselsebeginwith temptbl as (SELECTROW_NUMBER()OVER (ORDER BY id desc)AS Row, * from News O )SELECT * FROM temptbl where Row between(@pageindex-1)*@pagesize+1 and(@pageindex-1)*@pagesize+@pagesizeend</span>
参数说明:@pagesize 是用来设置分页显示记录条数的; @pageindex 是用来设置当前页的索引值的; @docount 是通过设置1与非1,来执行存储过程是返回记录数据还是记录条数的。
这是我D层的代码:
<span style="font-size:18px;">namespaceDAL{publicclassNewsDAO{privateSQLHelpersqlhelper;publicNewsDAO(){sqlhelper=newSQLHelper();}#region 以分页的形式选择全部新闻/// <summary>/// 选择全部新闻/// </summary>/// <returns>新闻数据表</returns>publicDataTableSelectAll(intpageSize, intpageIndex, intdoCount){DataTabledt=newDataTable();stringsqlText="NewsSelectAll";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("pagesize",pageSize),newSqlParameter("pageindex",pageIndex),newSqlParameter ("docount",doCount)};dt=sqlhelper.ExecuteQuery(sqlText, paras,CommandType.StoredProcedure);returndt;}#endregion}}</span>
因为B层没有涉及到复杂的业务逻辑,代码太简单了,所以在这里就省略了。
下面是我的界面层的代码:
<span style="font-size:18px;">publicpartialclassadmin_newsmanager: System.Web.UI.Page{// 页面加载protectedvoidPage_Load(objectsender, EventArgse){//判断session里面是否存在管理员if (Session["admin"]!=null&&Session["admin"].ToString()=="gelupu"){//已登录if (!Page.IsPostBack){<span style="color:#FF0000;"> DataTabledt=newNewsManager().SelectAll(anpNewsManager.PageSize,anpNewsManager.CurrentPageIndex, 1);anpNewsManager.RecordCount=(int) dt.Rows[0][0];BindNews();</span>}}else{//未登录Response.Redirect("login.aspx");}}#region绑定新闻列表privatevoidBindNews(){<span style="color:#FF0000;"> repNews.DataSource=newNewsManager().SelectAll(anpNewsManager.PageSize,anpNewsManager.CurrentPageIndex,0);repNews.DataBind(); </span>}#endregion// 分页按钮<span style="color:#FF0000;"> protectedvoidanpNewsManager_PageChanged(objectsender, EventArgse){BindNews();}</span>}</span>
总结:其实分页技术很简单,并没有大家想的那么难。分页技术有很多,但所有的分页技术都逃不出真分页,假分页这两种,所有的无非就是一些控件与数据库操作的配合实现的。
新闻发布系统之浅谈分页技术相关推荐
- rasp 系统_浅谈RASP技术攻防之基础篇
引言 本文就笔者研究RASP的过程进行了一些概述,技术干货略少,偏向于普及RASP技术.中间对java如何实现rasp技术进行了简单的举例,想对大家起到抛砖引玉的作用,可以让大家更好的了解一些关于we ...
- 新闻发布系统-用户登录.模糊分页查询
通过上几次的博客,我们大致完成了管理员的功能,现在是用户的功能,用户点击后到用户信息页面 给本页面绑定数据库,查询到数据库中新闻表的数据 用户信息页面数据代码 <div class=" ...
- 牛腩新闻发布系统——后台前台整合技术
在牛腩新闻发布系统中用到了一些技术我就来总结下 一.鼠标超链接设置 一开始就用到了鼠标超链接的设置.尾部样式的设置,这个东西每个网站都要用到非常长用所以可以写下来积累积累. 举个例子 如图:鼠标没有移 ...
- 新闻发布系统的软件测试计划,新闻发布系统毕业设计.doc
文档介绍: --------------------------校验:_____________-----------------------日期:_____________新闻发布系统毕业设计石家庄 ...
- JavaWeb 新闻发布系统数据分页操作
目录 分页 分页显示的步骤 规律分析 案例:使用分页技术实现新闻展示页面的分页显示和查询 index.jsp界面代码: NewsDao.java界面代码 分页 当我们的数据量较多,页面显示不完全时,需 ...
- 浅谈Hybrid技术的设计与实现【转】
https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术 ...
- 浅谈Hybrid技术的设计与实现第二弹
前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹--落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...
- JavaWeb新闻发布系统案例08——完结篇
前台 注册登录界面+主界面+评论界面 效果: 代码: <%@ page language="java" contentType="text/html; charse ...
- 【计算机毕业设计】新闻发布系统
一.系统截图(需要演示视频可以私聊) 摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们 ...
最新文章
- 80页笔记看遍机器学习基本概念、算法、模型,帮新手少走弯路
- Tomcat服务器 Varnish代理服务器
- Centos 配置多个虚拟IP
- 互联网晚报 | 11月21日 星期日 | B站公布《三体》动画首个预告片;涪陵榨菜回应天价礼盒;农行个人贷款余额突破7万亿元...
- Python快速判断若干整数是否互不相同
- 5 大场景深度探讨何为 Serverless 架构模式?
- mysql云上迁移_MySQL迁移上云最佳实践
- php libev扩展使用
- ar5b97无线网卡驱动linux 版下载,atheros ar5b97驱动
- 如何使用花生壳5设置HTTPS映射
- Visual Studio 2008 测试版 2 自述文件
- 语音识别平台_语音识别 平台_微信语音识别开放平台 - 云+社区 - 腾讯云
- 热血江湖网通一服务器不稳定,《热血江湖》网通新服 千呼万唤始出来
- 前端下载zip出现文件打不开
- React生成二维码并将canvas转换成img格式
- Python线程和进程的了解,多线程多进程
- 0111总结-函数与极限-高等数学
- Excel下拉列表多选框实现
- QT UI控件和事件
- 同在Google工作,薪资差别怎么那么大!
热门文章
- 删除Windows服务
- 应用程序如何从X86快速换到ARM架构 | 瑞迅科技工控一体机解读
- FICO入门系列2:FICO中的组织架构
- window下easymock本地部署非常详细流程,及问题解决
- oracle ebs应收贷记,【转】Oracle EBS 详解EBS接口开发之应收款处理
- mysql 漏洞排查_MySQL最新漏洞分析_MySQL
- 全选和反选,怎么写,两种方法~
- c语言a-gt;ave=0.0什么意思?,来位c语言的大神把,来把这个程序解释一遍吧!跪求啊...
- 11张图揭露了程序员的日常生活,看完笑哭(泪奔)!
- 作为一名大学生,如何在B站上快乐的学习?