Web之真假分页
在web设计中一个无法避免的问题就是分页显示。当数据量特别大的时候,我们不可能将全部的数据都在一个页面进行显示,假设这样将严重影响到它的美观性。所以在这个时候,分页显示则成为了我们的大功臣。当然分页也分两种,一种是真分页,一种是假分页,即:
假分页:从数据库中选择全部记录后在分页。
真分页:从数据库中选择当前页的记录
首先先来说一下自带的分页功能(假分页):
在.net中的GridView控件就自带分页显示功能,当然操作非常easy,总共分成两步:
1、在界面加入�一个GridView控件,设置其属性AllowPaging的值为True,PageSize的值为n(
n 为每一页显示记录的条数),这样就设置成功了。
2、将数据绑定到GridView控件上面就能够了。详细例如以下:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//页面第一次载入时调用绑定数据方法</span>
BindNews();
}
} /// <summary>
///绑定数据方法
/// </summary></span>
private void BindNews()
{
//查询数据,并将数据绑定到GridView1上面</span>
GridView1.DataSource = newNewsManager().SelectAll();
GridView1.DataBind();
} /// <summary>
/// 换页时的数据绑定功能
/// </summary>
/// <paramname="sender"></param>
/// <paramname="e"></param></span>
protected voidGridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
//获取当前页的索引</span>
GridView1.PageIndex = e.NewPageIndex; //又一次进行数据绑定</span>
BindNews();
}</span>
通过上面的步骤就能够轻松得到分页的数据了。尽管能够实现想要的结果,可是还存在着一些问题,比方上面的绑定数据方法中绑定的是所有的新闻,每次运行的时候都会查询数据库中所有的记录,当记录达到一定量大的时候比方50万条,100万条等等,这个时候绑定的时候会是多么长的时间。所以将上面的情况定义成为假分页。与其相比,真分页则非常好的攻克了这个问题,以下再来见证一下真分页的奇妙吧:
在分页之前要进行数据查询,所以在这我建立了一个存储过程,用于查询分页数据,详细例如以下:
<span style="font-size:18px;"><span style="white-space:pre"> </span>ALTER PROCEDURE[dbo].[aspPageChoose] </span>@startPageint,
</span>@endPageint
</span>AS
</span>BEGIN
----建立暂时表,用于储存</span>
</span>withtemptbl as (
</span>selectROW_NUMBER() OVER (ORDER BY id desc)as rowNum ,* from news
</span>)
</span>select* from temptbl where rowNum between@startPage and @endPage
</span>END</span>
其次是U层的建立,在界面上面放置两个控件,各自是AspNetPage和GridView,将这两个控件每页显示的个数设置成相应的数值,最后就是对数据的绑定,进行显示,例如以下
protected voidPage_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//页面第一次载入时调用绑定数据方法</span>
anp.RecordCount = <span style="color:#ff0000;">新闻的总数量</span>;
int startpage = 1;
int endpage =3;
DataTable dt = newNewsManager().SelectAspNetPage(startpage, endpage);
GridView1.PageSize =endpage - startpage + 1;
GridView1.DataSource = dt;
GridView1.DataBind();
}
} //进行换页显示数据</span>
protected voidanp_PageChanged(object sender, EventArgs e)
{
int startpage =anp.StartRecordIndex;
int endpage = anp.EndRecordIndex;
DataTable dt = newNewsManager().SelectAspNetPage(startpage, endpage);
GridView1.PageSize = endpage -startpage + 1;
GridView1.DataSource = dt;
GridView1.DataBind();
}</span>
总结:常说对照出真知,通过上面的对照,能够非常清楚的展示,真分页为我们打开了方便之门,除此之外还给我们编程带来了巨大的优点。上面的纯属自己摸索而来,如有什么不足,还请各位指点指点。
Web之真假分页的更多相关文章
- ASP.NET真假分页—真分页
当数据量过大,有几万甚至十几万条数据时,每次都从数据库中取出所有数据就会降低查询效率,系统运行慢,还有可能卡死,这时假分页就会显得很不人性化,因此有了真分页的必要性. 正如上篇博文总结归纳,“真”相对 ...
- AspNetPager真假分页对照实例
从開始学习BS已经有一段时间了. 对于BS的设计,都是进行的网页设计,当中包含从数据库中取出来的数据.显示在页面上.曾经在CS中,都是使用GridView等表格控件进行显示,因为数据小.并且右側又有滚 ...
- Javaweb 第15天 web练习和分页技术
第15天 web练习和分页技术 复习day14内容: 学习新技术的思路? 分析功能的思路? 使用queryRunner操作数据库的步骤? ResultSetHandler接口常用实现类(三个重点)? ...
- Asp.Net北大青鸟总结(四)-使用GridView实现真假分页
这段时间看完了asp.net视频.可是感觉到自己的学习好像没有巩固好,于是又在图书馆里借了几本关于asp.net的书感觉真的非常好自己大概对于asp.net可以实现主要的小Demo.可是我知道仅仅有真 ...
- 应用CSS的page-break-after属性 实现WEB页面强制分页打印
虽然dedecms.com向大家介绍了很多CSS属性的相关知识,但有些非常冷门的属性还是有所欠缺.在B/S程序中,对打印页面的控制,CSS相对比较弱,例如: 自动分页, 就基本没啥实际用途.我们通常需 ...
- Dynamics CRM2016 Web Api之分页查询
在dynamics crm web api还没出现前,我们是通过fetchxml来实现的,当然这种方式依旧可行,那既然web api来了我们就拥抱新的方式. web api中我们通过指定查询的条数来实 ...
- ASP.NET——真假分页
所谓分页,就是把所有要显示的内容分成n多页来显示.那为什么要用分页而不直接全部显示呢?这就好比一本书,我们可以用一张纸写完全部书的内容,但实际上并不是这么做的.我们把网页分成一页一页的,其实很大程度上 ...
- Web开发之分页算法,N(N>=3)种解决方案
在Web开发中,分页是最常用的一个功能了.但是,想简单.灵活.方便地解决分页这个问题,还是需要动点脑筋的. 今天,简要梳理下,过去6年中,亲自遇到的分页问题和解决办法. 1. 定义问题 原由:在页面中 ...
- Java Web开发之分页(ajax)
1.需要用到的jar包.js文件 JSONArray().fromObject()需要的jar包: (1)commons-beanutils-1.8.3.jar (2)commons-collecti ...
随机推荐
- 阿里云容器服务--配置自定义路由服务应对DDOS攻击
阿里云容器服务--配置自定义路由服务应对DDOS攻击 摘要: 容器服务中,除了slb之外,自定义路由服务(基于HAProxy)也可以作为DDOS攻击的一道防线,本文阐述了几种方法来应对普通规模的DDO ...
- IOS文章地址暂时记录
动画 http://www.jianshu.com/p/1c6a2de68753 iOS App性能优化 http://www.hrchen.com/2013/05/performance-wit ...
- 【SQL server】安装和配置
(1)SQL sever 版本问题1: SQL sever 2000 .SQL sever 2005.SQL sever 2008 .SQL sever 2008 R2 安装的时候需要注意是SQL s ...
- <译>Selenium Python Bindings 5 - Waits
如今,大多数的Web应用程序使用AJAX技术.当页面加载到浏览器,页面中的元素也许在不同的时间间隔内加载.这使得元素很难定位,如果在DOM中的元素没有呈现,它将抛出ElementNotVisibleE ...
- 【windows核心编程】一个API拦截的例子
API拦截 修改PE文件导入段中的导入函数地址 为 新的函数地址 这涉及PE文件格式中的导入表和IAT,PE文件中每个隐式链接的DLL对应一个IMAGE_IMPORT_DESCRIPTOR描述符结构, ...
- C/C++:作用域、可见性与生存期
作用域 作用域是用来表示某个标识符在什么范围内有效. C++的作用域主要有四种:函数原型作用域.块作用域.类作用域和文件作用域. 由大到小:文件作用域>类作用域>块作用域>函数原型作 ...
- 关于LyX的一些小问题
LyX转HTML(MS WORD)的脚本elyxer的更新: 首先从官网下载最新版的软件包.解压后,在命令行下python install.py执行安装(直接双击install.py应该也可以),py ...
- 一个考察for循环题 讨论一下
一道Java程序题,主要是考察for循环如下所示: public class Test { static boolean fun(char c) { System.out.print(c); retu ...
- unix文件权限
一.UNIX下关于文件权限的表示方法和解析 SUID 是 Set User ID, SGID 是 Set Group ID的意思. UNIX下可以用ls -l 命令来看到文件的权限.用ls命令所得到的 ...
- HDU 5724 Chess (sg函数)
Chess 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5724 Description Alice and Bob are playing a s ...