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 ...
随机推荐
- OpenCV2:第三章 读取图像
一.简介 将图像文件读入内存,可以用cv::imread()函数 二.读取图像 Mat imread(const string& filename,int flags=1); Mat: 如果读 ...
- loadClass和forName 的区别
类的加载方式 1.隐式加载:new 2.显式加载,loadClass,forName 等 loadClass 和 forName的区别 类的装载过程 1.加载:通过classLoader加载class ...
- SQL 语句解决实际问题
在项目开发过程中,遇到数据库的查询问题 一.查询某表字段的信息 select * from syscolumns SELECT object_id('TB_KYChildProject') selec ...
- CodeForces - 930A Peculiar apple-tree(dfs搜索)
题目: 给出一个树,这棵树上每个结点每一秒都会结出一颗果实,果实每经过一秒就会落向下一个结点,如果一个结点在同一时刻上的果实两两抵消,问最后在根节点处一共有多少个果实. 思路: dfs直接搜索统计这棵 ...
- 简单DP内容
1. 最长上升子序列 [题目描述] 给定N个数,求这N个数的最长上升子序列的长度. [样例输入] 7 2 5 3 4 1 7 6 [样例输出] 4 第一种解法:时间复杂度O(n^2), 状态设计:DP ...
- [LUOGU] P2704 炮兵阵地
题目描述 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队. 一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示), 也可能是平原(用"P&q ...
- Ubuntu 和 centos7 服务的启动
Ubuntu 下: /etc/init.d/nginx start | stop | reload Centos7下: service nginx start | stop | reload
- 夯实Java:从面向对象说起
作者:伯特出处:github.com/ruicbAndroid/LoulanPlan声明:本文出自伯特的<LoulanPlan>,转载务必注明作者及出处. 刚学习 Java 那会就接触了& ...
- Django 1.8.11 REST风格路由
# -*- coding: utf-8 -*- """ Tencent is pleased to support the open source community b ...
- 关于最新版本react-native0.59.x构建的问题解决方案
react-native的版本更新是真的快,几乎几天就是一个小版本,然而在这个过程中,对于新手来说,成功构建一个,并跑起来的项目,还是有一定难度的,各种问题,一不小心,你就会发现你的时间全部都浪费在了 ...