• ASP.NET——真假分页


          所谓分页,就是把所有要显示的内容分成n多页来显示。那为什么要用分页而不直接全部显示呢?这就好比一本书,我们可以用一张纸写完全部书的内容,但实际上并不是这么做的。我们把网页分成一页一页的,其实很大程度上是在为用户考虑,极大的方便用户。

          分页有两种,一种是真分页,一种是假分页。

          假分页的“”在于我已经把所有的数据取出来了,只是在显示的时候给予一定的控制来到达分页的效果。

          真分页的“”在于所有的数据并非一次取出,而是真真正正的用户查看哪一页才去数据库中取出所需的内容。

    假分页:

          在ASP.NET中,我们经常用GridView,Repeater来绑定数据源,显示从数据库中查到的数据。我们就先以GridView为例,来看看假分页是如何实现的。

    首先,在页面添加GridView。并设置允许分页和分页显示的条数,即AllowPaging=True,PageSize=6.(即每页显示6条记录,如图:)


    当运行界面时,可以显示分页状态。但当单击第2页的按钮时,会触发PageIndexChanging事件,它是在单击某一页导航按钮时,但在 GridView 控件处理分页操作之前发生。

     public partial class Test : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                //当第一次进入页面时,显示绑定的数据
                if (!Page.IsPostBack)
                {
                    GridView1.DataSource = new NewsManager().SelectAll(); //这里用到了分层,可以直接理解为绑定数据库中的表。
                    GridView1.DataBind();
                }
            }
    
            //触发分页事件
            protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
                GridView1.PageIndex = e.NewPageIndex;
                GridView1.DataSource = new NewsManager().SelectAll();
                GridView1.DataBind();
            }
        }
    这样,就可以实现假分页了。

    真分页:

    这里要用到一个分页的控件AspNetPager。

    首先,添加该控件。

    在工具箱处右击——选项卡

    单击浏览后,找到AspNetPager.dll.


    这样,工具箱就出现该控件了。


    把它拖到设计界面,如下图:


          分页控件添加完成后,类似地,设定每页的显示条数和最大记录数。这时,当改变页数时执行PageChanged事件。StartRecordIndex, EndRecordIndex分别是开始行数和结束行数。利用这两个参数很容易可以实现从数据库一页页地取出数据,在这里就不赘述了。


          比较这两种分页方式:

          真分页与后台的交互次数多,但面对庞大数据时仍能保持高效率,用户体验度较好。假分页则相反。


    附:

    SQL中的分页语句

    select top 每页显示的记录数(PageSize) * from topic where id not in  
     (select top (当前的页数-1)×每页显示的记录数 id from topic order by id desc)  
     order by id desc

    AspNetPager分页控件

    http://www.jb51.net/codes/40809.html


  • 相关阅读:
    2.1.4 现代计算机的设计原则(译)
    2.1.2 指令执行(译)
    计算机体系结构之一体系结构【译】
    2.2.1 比特【译】
    2.1.6 处理器级并行【译】
    jQery Datatables回调函数中文
    彪悍的人生不需要解释
    程序员读书雷达
    打开页面自动打开QQ的javascript代码
    EF大数据插入
  • 原文地址:https://www.cnblogs.com/saixing/p/6730323.html
Copyright © 2020-2023  润新知