从開始学习BS已经有一段时间了。

对于BS的设计,都是进行的网页设计,当中包含从数据库中取出来的数据。显示在页面上。曾经在CS中,都是使用GridView等表格控件进行显示,因为数据小。并且右側又有滚轮。

所以从来都没有考虑过给数据进行分页。所以这是一大失误。

如今反应过来也不算晚。接下来,让我们接触一下分页。

不进行分页的弊端:

对于大数据的查询操作。

1、数据量太大,窗口加载时间太慢

2、显示的数据量太大,用户看起来不舒服。

分页的两种方式:

假分页:

在运行查询的时候,就把全部的数据都查询出来,之后再跳转页面的时候就不须要进行查询了。

真分页:

在运行查询操作的时候,仅仅查询所显示当前页面的内容进行显示。之后的跳转页面也须要查询数据库取相应数据。

在数据量大的情况下对照:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemM0NzQyMzU5MTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

在小数据的情况下,由于如今的电脑处理速度都够快,採用真分页和假分页用户体验度没有区别。

关于怎样加入AspNetPager控件,借阅下面文章:

http://blog.csdn.net/u010066934/article/details/38374111

真假分页实例结果图:

使用自带的GridView表格来显示数据。利用AspNetPager控件  进行分页。

怎样使用AspNetPager请翻阅---。

我就不赘述了。

html主界面:

<table class="auto-style1">
<tr>
<td>
<webdiyer:AspNetPager ID="anpTop" runat="server" PageSize="5" OnPageChanged="anp_PageChanged">
</webdiyer:AspNetPager>
</td>
</tr>
<tr>
<td class="auto-style2">
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</td>
</tr>
<tr>
<td>
<webdiyer:AspNetPager ID="anpBottom" runat="server" CloneFrom="anpTop" CssClass="anp" OnPageChanged="anp_PageChanged" PageSize="5">
</webdiyer:AspNetPager>
</td>
</tr>
</table>

先设置一个分页控件在首部,之后再复制上面的控件放究竟部,使其达到同步的效果。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemM0NzQyMzU5MTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

数据库连接类:

/*************************************************
*作者:赵崇
*小组:
*说明:
*创建日期:2014/8/3 14:34:46
*版本:V1.0.0
**************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient; namespace news
{
public class DB
{
public static SqlConnection createCon()
{
return new SqlConnection("server=.;database=AspNetPagerTest;uid=sa;pwd=123456");
} public static int count()
{
SqlConnection con = createCon();
con.Open();
SqlCommand cmd = new SqlCommand("select count(*) from anp",con);
return (int)cmd.ExecuteScalar();
} public static SqlDataReader GetSource(int start,int end)
{
SqlConnection con = createCon();
con.Open();
SqlCommand cmd= new SqlCommand("select * from anp where id between "+start+" and "+end, con);
SqlDataReader sdr= cmd.ExecuteReader();
return sdr;
} public static DataTable GetSource()
{
SqlConnection con = createCon();
con.Open();
SqlCommand cmd = new SqlCommand("select * from anp", con);
SqlDataReader sdr = cmd.ExecuteReader();
DataTable dt=new DataTable();
dt.Load(sdr);
return dt;
}
}
}

为了对照一下真假分页。首先看假分页的实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient; namespace news
{
public partial class JiaFenYe : System.Web.UI.Page
{
DataView dv = new DataView(DB.GetSource()); protected void Page_Load(object sender, EventArgs e)
{
//anpTop.RecordCount = DB.count(); //把数据的记录总数 保存到分页控件中
//GridView1.DataSource = DB.GetSource(1, 5); //默认选择5条记录
//GridView1.DataBind(); anpTop.RecordCount = DB.count(); //把数据的记录总数 保存到分页控件中
dv.RowFilter = "id<=5"; //默认第一页显示5条记录
GridView1.DataSource = dv;
GridView1.DataBind(); //绑定视图
} protected void anp_PageChanged(object sender, EventArgs e)
{
//Response.Write("開始页码:" + anpTop.StartRecordIndex + "<br> 结束页码:" + anpTop.EndRecordIndex);
int startIndex = anpTop.StartRecordIndex; //事实上记录号
int endIndex = anpTop.EndRecordIndex; //终止记录号
//DataView dv = new DataView(DB.GetSource());
dv.RowFilter = "id >=" + startIndex + " and id<= " + endIndex; //查询指定区间内的记录
GridView1.DataSource = dv;
GridView1.DataBind(); //绑定视图
}
}
}

在来对照一下。真分页的实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace news
{
public partial class WebForm1 : System.Web.UI.Page
{ protected void anp_PageChanged(object sender, EventArgs e)
{
//Response.Write("開始页码:" + anpTop.StartRecordIndex + "<br> 结束页码:" + anpTop.EndRecordIndex);
int startIndex = anpTop.StartRecordIndex; //数据的起始记录数
int endIndex = anpTop.EndRecordIndex; //数据的截止记录数
GridView1.DataSource = DB.GetSource(startIndex,endIndex); //显示当前区间内的数据
GridView1.DataBind();
} protected void Page_Load(object sender, EventArgs e)
{
anpTop.RecordCount = DB.count(); //把数据的记录总数 保存到分页控件中
GridView1.DataSource = DB.GetSource(1,5); //默认选择5条记录
GridView1.DataBind();
}
}
}

通过对照以上实验结果,由于測试的数据太少  效果不明显。

只是通过代码实现过程,能够看出,在大数据的前提下,假分页加载是一个非常大的问题。

当然 两种分页方式 各有特色。能够依据实际需求来选择。

假设有须要看源代码的,请自行下载:

http://download.csdn.net/detail/zc474235918/7734743

AspNetPager真假分页对照实例的更多相关文章

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

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

  2. AspNetPager 免费分页控件7.5.1版发布!

    AspNetPager 免费分页控件7.5.1版发布,本次升级主要内容有: 修正了ShowDisabledButtons为false时html闭合标签丢失的bug:改为从System.Web.UI.W ...

  3. 【MySQL】分页查询实例讲解

    MySQL分页查询实例讲解 1. 前言 本文描述了团队在工作中遇到的一个MySQL分页查询问题,顺带讲解相关知识点,为后来者鉴.本文的重点不是"怎样"优化表结构和SQL语句,而是探 ...

  4. Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例

    前言:由于之前没有接触过Hibernate框架,但是最近看一些博客深深被它的"效率"所吸引,所以这就来跟大家一起就着一个简单的例子来尝尝Spring全家桶里自带的JPA的鲜 Spr ...

  5. 分享自己用的php分页类实例源码

    分享一个我自己用着的php分页类实例源码,供大家参考,具体内容如下: <?php /** file: page.class.php 完美分页类 Page */ class Page { priv ...

  6. Delphi调用SQL分页存储过程实例

    Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...

  7. 使用AspNetPager进行分页,查询条件丢失问题

    在Asp.Net中使用AspNetPager进行分页时,发现一个问题: 当通过查询条件进行查询后,对查询结果进行翻页操作时,查询条件会丢失. 当修改UrlPaging属性后(设置UrlPaging=“ ...

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

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

  9. 用CSS创建分页的实例

    总结介绍如何通过使用 CSS 来创建分页的实例. ㈠简单分页 如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航. 以下实例演示了如何使用 HTML 和 CSS 来创建分页: <!DO ...

随机推荐

  1. HTML基础(一)

    什么是HTMLHTML Hypertext Markup Language:即超文本标记语言 HTML特点 1.HTML不需要编译,直接由浏览器执行 2.HTML文件是一个文本文件 3.HTML文件必 ...

  2. pm2 start命令进阶详解

    在node的世界里面,并不存在nginx或者apache,甚至tomcat这种东东.一个node,本身就用几行代码,就可以启动个server进程,监听个端口,为大家提供web服务.这和传统的网站代码的 ...

  3. 6. COLUMN_PRIVILEGES

    6. COLUMN_PRIVILEGES 表COLUMN_PRIVILEGES提供有关列权限的信息.它从mysql.columns_priv系统表中获取其值 . 表COLUMN_PRIVILEGES包 ...

  4. Linux系统中使用lftp命令实现FTP上传下载

    Linux 下常用的操作命令有 ftp. lftp 和 sftp,图形化界面非常好用的有 FileZilla.不过在服务器命令界面中,lftp使用比较方便,功能也比ftp更加强大.lftp的界面很像L ...

  5. @RestController 与 @Controller 注解区别

    文章来源:https://www.cnblogs.com/hello-tl/p/9202658.html @RestController注解相当于@ResponseBody + @Controller ...

  6. 《算法导论》— Chapter 11 散列表

    1 序 在很多应用中,都要用到一种动态集合结构,它仅支持INSERT.SEARCH以及DELETE三种字典操作.例如计算机程序设计语言的编译程序需要维护一个符号表,其中元素的关键字为任意字符串,与语言 ...

  7. 【HIHOCODER 1605】小Hi的生成树计数

    描述 小Hi最近对生成树(包含所有顶点的联通无环子图.)非常的感兴趣,他想知道对于特定的简单平面无向图是不是存在求生成树个数的简单方法. 小Hi定义了这样的图:一个以{0,1,2--n}为顶点的图,顶 ...

  8. p3386 二分图匹配模板

    https://www.luogu.org/problemnew/show/P3386 可以只做一边的匹配 #include <bits/stdc++.h> using namespace ...

  9. python024 Python3 实例

    Python3 实例 以下实例在 Python3.4.3 版本下测试通过: Python Hello World 实例 Python 数字求和 Python 平方根 Python 二次方程 Pytho ...

  10. js中trim函数的简单实现

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...