AspNetPager真假分页对照实例

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

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

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

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

不进行分页的弊端:

对于大数据的查询操作。

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

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

分页的两种方式:

假分页:

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

真分页:

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

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

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

关于怎样加入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>

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

数据库连接类:

/*************************************************
*作者:赵崇
*小组:
*说明:
*创建日期: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

时间: 2024-10-11 00:31:44

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

AspNetPager真假分页对比实例

从开始学习BS已经有一段时间了.对于BS的设计,都是进行的网页设计,其中包括从数据库中取出来的数据,显示在页面上.以前在CS中,都是使用GridView等表格控件进行显示,由于数据小,而且右侧又有滚轮.所以从来都没有考虑过给数据进行分页.所以这是一大失误.现在反应过来也不算晚.接下来,让我们接触一下分页. 不进行分页的弊端: 对于大数据的查询操作. 1.数据量太大,窗体载入时间太慢 2.显示的数据量太大,用户看起来不舒服. 分页的两种方式: 假分页: 在执行查询的时候,就把所有的数据都查询出来,

AspNetPager分页记录显示实例

在牛腩视频中的最后一集,涉及到了一个外部控件AspNetPager实现分页记录显示的一个小例子没有完成,据了解分页显示功能在软件设计中是很重要的一个功能,因此,在这里讲未完成的工作完成. 在视频中讲到,gridview的分页功能属于假分页,为什么呢?因为每次分页必须查询完数据库中所有的记录,这样如果数据量过大,将会造成很大不便.所以选择了AspNetPager这个控件. 其实,这个控件只是提供了一个分页功能,它并不能显示数据,因此,它还是需要与gridview结合起来使用才可以完全实现我们分页的

牛腩新闻发布系统——真假分页

牛腩新闻发布系统已近尾声,牛老师重磅推出真假分页作为压轴,足以见得分页的重要性.我们就一起看一下真假分页的实现以及各自的特点. 一.分页简介 当我们显示足够大的数据量时,所有数据显示在一页上,会造成不必要的麻烦,本着为用户服务的态度,我们往往采用分页显示的处理办法.分页主要分为真分页与假分页. 假分页: 从数据库一次性取出所有数据绑定到控件上,再将所有数据根据每页显示记录条数进行分页.当数据量 比较大时,这种分页方法会造成查询速度, 使用户体验度降低,但是跳页速度较快. 真分页:在执行查询操作的

ASP.NET——真假分页

所谓分页,就是把所有要显示的内容分成n多页来显示.那为什么要用分页而不直接全部显示呢?这就好比一本书,我们可以用一张纸写完全部书的内容,但实际上并不是这么做的.我们把网页分成一页一页的,其实很大程度上是在为用户考虑,极大的方便用户. 分页有两种,一种是真分页,一种是假分页. 假分页的"假"在于我已经把所有的数据取出来了,只是在显示的时候给予一定的控制来到达分页的效果. 真分页的"真"在于所有的数据并非一次取出,而是真真正正的用户查看哪一页才去数据库中取出所需的内容.

ASP.NET真假分页—真分页

 承接上篇博文<ASP.NET真假分页-假分页>:http://blog.csdn.net/u010773667/article/details/38845009,继续讲解ASP.NET真假分页之真分页. 真分页 当数据量过大,有几万甚至十几万条数据时,每次都从数据库中取出所有数据就会降低查询效率,系统运行慢,还有可能卡死,这时假分页就会显得很不人性化,因此有了真分页的必要性. 正如上篇博文总结归纳,"真"相对于"假"存在,即不藕断丝连,从根部彻底断

Web之真假分页

在web设计中一个无法避免的问题就是分页显示.当数据量特别大的时候,我们不可能将全部的数据都在一个页面进行显示,假设这样将严重影响到它的美观性.所以在这个时候,分页显示则成为了我们的大功臣.当然分页也分两种,一种是真分页,一种是假分页,即: 假分页:从数据库中选择全部记录后在分页.     真分页:从数据库中选择当前页的记录 首先先来说一下自带的分页功能(假分页): 在.net中的GridView控件就自带分页显示功能,当然操作非常easy,总共分成两步: 1.在界面加入?一个GridView控

牛腩新闻发布系统-真假分页

牛腩新闻发布系统在新闻管理页面出现这么一个问题,当新闻条数非常多的时候,表格会很长,如下图,圆角矩形就会出现一个缺口.在这里就引出了分页技术. 具体解决办法如下: 1.我们首先在Web窗体源中拉入一个GridView控件,然后在设计中设置其属性.AllowPaging:True,,PageSize:5(可根据自己意愿来). <span style="font-size:18px;"><asp:GridView ID="GridView1" runa

Asp.Net数据控件引用AspNetPager.dll分页

今天与大家分享一下"Asp.Net数据控件引用AspNetPager.dll分页"首先声明以下几点: 1.也许讲解有点初级,希望高手不要"喷"我,因为我知道并不是每一个人都是高手,我也怕高手们说我装13,小生不才: 2.如有什么不对的地方,还希望大家指出,一定虚心学习: 3.本文属于作者原创,尊重他人劳动成果,转载请注明作者,谢谢. 下面开讲: 第一步:首先是下载一个AspNetPager.dll 下载地址 http://files.cnblogs.com/tand

SQLserver分页查询实例

Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询每页30条,查询第1500页(即第45001-45030条数据),字段ID聚集索引,YEAR无索引,Sqlserver版本:2008R2 第一种方案.最简单.普通的方法: SELECT TOP 30 * FROM ARTICLE WHERE ID NOT IN(SELECT TOP 45000 ID