AspNetPager真假分页对照实例
从開始学习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();
}
}
}
通过对照以上实验结果,由于測试的数据太少 效果不明显。
只是通过代码实现过程,能够看出,在大数据的前提下,假分页加载是一个非常大的问题。
当然 两种分页方式 各有特色。能够依据实际需求来选择。
假设有须要看源代码的,请自行下载:
AspNetPager真假分页对照实例的更多相关文章
- ASP.NET真假分页—真分页
当数据量过大,有几万甚至十几万条数据时,每次都从数据库中取出所有数据就会降低查询效率,系统运行慢,还有可能卡死,这时假分页就会显得很不人性化,因此有了真分页的必要性. 正如上篇博文总结归纳,“真”相对 ...
- AspNetPager 免费分页控件7.5.1版发布!
AspNetPager 免费分页控件7.5.1版发布,本次升级主要内容有: 修正了ShowDisabledButtons为false时html闭合标签丢失的bug:改为从System.Web.UI.W ...
- 【MySQL】分页查询实例讲解
MySQL分页查询实例讲解 1. 前言 本文描述了团队在工作中遇到的一个MySQL分页查询问题,顺带讲解相关知识点,为后来者鉴.本文的重点不是"怎样"优化表结构和SQL语句,而是探 ...
- Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例
前言:由于之前没有接触过Hibernate框架,但是最近看一些博客深深被它的"效率"所吸引,所以这就来跟大家一起就着一个简单的例子来尝尝Spring全家桶里自带的JPA的鲜 Spr ...
- 分享自己用的php分页类实例源码
分享一个我自己用着的php分页类实例源码,供大家参考,具体内容如下: <?php /** file: page.class.php 完美分页类 Page */ class Page { priv ...
- Delphi调用SQL分页存储过程实例
Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...
- 使用AspNetPager进行分页,查询条件丢失问题
在Asp.Net中使用AspNetPager进行分页时,发现一个问题: 当通过查询条件进行查询后,对查询结果进行翻页操作时,查询条件会丢失. 当修改UrlPaging属性后(设置UrlPaging=“ ...
- Asp.Net北大青鸟总结(四)-使用GridView实现真假分页
这段时间看完了asp.net视频.可是感觉到自己的学习好像没有巩固好,于是又在图书馆里借了几本关于asp.net的书感觉真的非常好自己大概对于asp.net可以实现主要的小Demo.可是我知道仅仅有真 ...
- 用CSS创建分页的实例
总结介绍如何通过使用 CSS 来创建分页的实例. ㈠简单分页 如果你的网站有很多个页面,你就需要使用分页来为每个页面做导航. 以下实例演示了如何使用 HTML 和 CSS 来创建分页: <!DO ...
随机推荐
- CWnd::Updata的作用
CWnd::Updata的作用 CWnd::UpdateData 调用此成员函数以在对话框中初始化数据,或者取回和验证对话框数据. BOOL UpdateData(BOOL bSaveAndValid ...
- ibatis 实现 物理级别的 分页 兼容多种数据库(转载)
最近在看iBatis时,想做用动态Sql做个分布.因为在做项目时用iBator工具生成没有分页的功能,只有一些我们常用的功能.所以要对生成后的代码做修改.我在Java高手真经的一书中看到有做了MySq ...
- Mac下Apache服务器的初步搭建
回送地址 127.0.0.1(localhost) ping 这个地址可以检测网卡是否正常 ping 本地地址如果不正常说明网线挂了 // 启动 sudo apachectl -k start ...
- 前端打包--source-map=false作用
参考:http://www.cnblogs.com/axl234/p/6500534.htmlng serve默认会产生.map文件,该文件保存有原始代码与运行代码的映射关系, 浏览器可以通过它找到原 ...
- iPhone模拟定位(非越狱修改手机定位)
剩下的事情就是build一下到手机,那么,就可以看到神奇的效果! 本次带来一个简单又好玩的实用功能,比如定位装逼(共享定位非分享可选那种),又或者定位打卡之类,由于改变的是设备级别的定位,本设备所 ...
- jquery 打星评分插件
<link rel="stylesheet" href="/static/vendor/raty/jquery.raty.css"> <scr ...
- springMVC 文件上传 HTTP Status 400 – Bad Request
可能原因是:multipartResolver没有配置正确 请看解决方案: <!--文件上传 id必须为multipartResolver,不然报错HTTP Status 400 – Bad R ...
- linux shell管道和xargs的区别
如上图,加了xargs的话相当于将上一个操作的结果作为命令执行前的操作,不加的话直接先把后面的命令运行一遍再操作
- FZU1004-Number Triangle经典动归题,核心思路及代码优化
Problem 1004 Number Triangle Accept: 2230 Submit: 5895Time Limit: 1000 mSec Memory Limit : 327 ...
- codeforces #299 div 2
(总算是5题都做完了- -) 暂时做了4题,先放一下有时间做最后一题(当然如果我真的能做出的话...)(看了大神的代码总算是理解了E题,做完发现也没那么难,果然想出一个思路的过程对于我这种弱渣来说还是 ...