在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之真假分页的更多相关文章

  1. ASP.NET真假分页—真分页

    当数据量过大,有几万甚至十几万条数据时,每次都从数据库中取出所有数据就会降低查询效率,系统运行慢,还有可能卡死,这时假分页就会显得很不人性化,因此有了真分页的必要性. 正如上篇博文总结归纳,“真”相对 ...

  2. AspNetPager真假分页对照实例

    从開始学习BS已经有一段时间了. 对于BS的设计,都是进行的网页设计,当中包含从数据库中取出来的数据.显示在页面上.曾经在CS中,都是使用GridView等表格控件进行显示,因为数据小.并且右側又有滚 ...

  3. Javaweb 第15天 web练习和分页技术

    第15天 web练习和分页技术 复习day14内容: 学习新技术的思路? 分析功能的思路? 使用queryRunner操作数据库的步骤? ResultSetHandler接口常用实现类(三个重点)? ...

  4. Asp.Net北大青鸟总结(四)-使用GridView实现真假分页

    这段时间看完了asp.net视频.可是感觉到自己的学习好像没有巩固好,于是又在图书馆里借了几本关于asp.net的书感觉真的非常好自己大概对于asp.net可以实现主要的小Demo.可是我知道仅仅有真 ...

  5. 应用CSS的page-break-after属性 实现WEB页面强制分页打印

    虽然dedecms.com向大家介绍了很多CSS属性的相关知识,但有些非常冷门的属性还是有所欠缺.在B/S程序中,对打印页面的控制,CSS相对比较弱,例如: 自动分页, 就基本没啥实际用途.我们通常需 ...

  6. Dynamics CRM2016 Web Api之分页查询

    在dynamics crm web api还没出现前,我们是通过fetchxml来实现的,当然这种方式依旧可行,那既然web api来了我们就拥抱新的方式. web api中我们通过指定查询的条数来实 ...

  7. ASP.NET——真假分页

    所谓分页,就是把所有要显示的内容分成n多页来显示.那为什么要用分页而不直接全部显示呢?这就好比一本书,我们可以用一张纸写完全部书的内容,但实际上并不是这么做的.我们把网页分成一页一页的,其实很大程度上 ...

  8. Web开发之分页算法,N(N>=3)种解决方案

    在Web开发中,分页是最常用的一个功能了.但是,想简单.灵活.方便地解决分页这个问题,还是需要动点脑筋的. 今天,简要梳理下,过去6年中,亲自遇到的分页问题和解决办法. 1. 定义问题 原由:在页面中 ...

  9. Java Web开发之分页(ajax)

    1.需要用到的jar包.js文件 JSONArray().fromObject()需要的jar包: (1)commons-beanutils-1.8.3.jar (2)commons-collecti ...

随机推荐

  1. Autofac 依赖注入 ASP.NET MVC5 插件机制中插件的简单实现

    一.前言 由于项目业务复杂,创建了多个插件并把他们放在了不同的项目中,项目使用AutoFac做的IOC:但是主项目可以注入,插件注入失败, 没有为该对象定义无参数的构造函数.下面就一步一步注入插件项目 ...

  2. 底部菜单栏(一) TabHost实现

    需求:使用TabHost实现底部菜单栏: 效果图: 实现分析: 1.目录结构: 代码实现: 1.activity_main.xml <?xml version="1.0" e ...

  3. Google服务背后的天文数字

    每天当我们在互联网上驰骋的时候,在背后支撑网页.应用.服务运转的就是各种编程语言和代码.无论是Gmail确认收件箱还是执行关键词搜索都需要大量的代码,但是你知道Google的各项互联网服务合起来需要多 ...

  4. KMP(字符串匹配)

    1.KMP是一种用来进行字符串匹配的算法,首先我们来看一下普通的匹配算法: 现在我们要在字符串ababcabcacbab中找abcac是不是存在,那么传统的查找方法就是一个个的匹配了,如图: 经过六趟 ...

  5. C++ 之高效使用STL ( STL 算法分类)

    http://blog.csdn.net/zhoukuo1981/article/details/3452118

  6. 生成chm文档工具- Sandcastle -摘自网络

    Sandcastle是微软官方的文档生成工具,NDoc开发停止后,这个貌似也是唯一的一个这方面的工具.它从dll文件及其xml注释文件能够 生成完整的帮助文档,支持多种生成格式(Helpe1x:chm ...

  7. Getting Started with Entity Framework 6 Code First using MVC 5--Contoso 大学

    在本教程中使用的软件版本 Visual Studio 2013 年 4.5.NET 实体框架 (EntityFramework 6.1.0 NuGet 包) 6 Windows Azure SDK 2 ...

  8. 【转】手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  9. Delphi使用TStringHash实现建立类(有点像反射)

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  10. 嵌入式LINUX入门到实践(一)

    MINI2440 IIC协议 IIC协议在工程中应用广泛,在我看来,此协议的优势就在于其硬件及其简单,结构清晰. 首先来解读一下S3C2440A这款芯片的IIC协议. 一.一个协议的解读从如上结构图中 ...