在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在MVC的简单实践:破解在Controller构造函数中的实例化 - winhu

    相信大家对Autofac并不陌生,很多人都在使用.本文只是介绍一下本人在使用时的一点想法总结. 在使用一个框架时,肯定要去它的官网查阅一下.autofac的官网给出了一些经典的使用案例.如注册容器: ...

  2. HDU 5744 Keep On Movin

    Keep On Movin Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  3. poj 1026(置换群)

    题意:给你一个变换规则,和一个字符串,问经过k次变换后得到的字符串. 思路:开始的时候试图去找它的整个周期,谁知道周期太大了,各种RE,后来在得知此题需要用置换群来优化,第一次接触置换群学习了下! 代 ...

  4. [Everyday Mathematics]20150111

    设 $n$ 阶方阵 $A=(\al_1,\cdots,\al_n)$ 非奇异, $B=(0,\al_2,\cdots,\al_n)$. 试证: $BA^{-1}$, $A^{-1}B$ 的秩均为 $n ...

  5. java多线程学习笔记——详细

    一.线程类  1.新建状态(New):新创建了一个线程对象.        2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...

  6. 如何解决Rally模板提示angular js加载错误

    [前言] Rally是一个开源测试工具,用于测试openstack各个组件的性能 在使用Rally测试完毕后,一般会生成测试报告,这点很重要.但是原生态的Rally报告模板angular js框架是从 ...

  7. const 常量数据,只读

    网上其他的博客地址:1 http://www.cnblogs.com/ronny/p/3672501.html 2 http://www.cnblogs.com/hellogiser/p/cplusp ...

  8. C语言反转字符串

    也是面腾讯的一道编程题=,= 这题比较简单 代码如下: #include <stdio.h> #include <string.h> // 非递归实现字符串反转 char *r ...

  9. 【SummaryPlan】Summary of Feb & Plan of March——How to 'just do it'?

    Why I choose to be a graduate student from an undergraduate student? It’s time to applying for inter ...

  10. bzoj 2594 [Wc2006]水管局长数据加强版(LCT+最小生成树)

    [深坑勿入] [给个链接] http://blog.csdn.net/popoqqq/article/details/41348549 #include<cstdio> #include& ...