zoukankan      html  css  js  c++  java
  • Web之真假分页

          web设计中一个无法避免的问题就是分页显示。当数据量特别大的时候,我们不可能将全部的数据都在一个页面进行显示,假设这样将严重影响到它的美观性。所以在这个时候,分页显示则成为了我们的大功臣。当然分页也分两种,一种是真分页,一种是假分页,即:

         假分页:从数据库中选择全部记录后在分页。

        真分页:从数据库中选择当前页的记录

     

        首先先来说一下自带的分页功能(假分页):

        在.net中的GridView控件就自带分页显示功能,当然操作非常easy,总共分成两步:

            1、在界面加入�一个GridView控件,设置其属性AllowPaging的值为TruePageSize的值为n n 为每一页显示记录的条数),这样就设置成功了。

            2、将数据绑定到GridView控件上面就能够了。详细例如以下:

            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                   //页面第一次载入时调用绑定数据方法</span>
                    BindNews();
                }
            }
     
            /// <summary>
            ///绑定数据方法
            /// </summary></span>
            private void BindNews()
            {
                //查询数据,并将数据绑定到GridView1上面</span>
                GridView1.DataSource = newNewsManager().SelectAll();
                GridView1.DataBind();
            }
     
            /// <summary>
            /// 换页时的数据绑定功能
            /// </summary>
            /// <paramname="sender"></param>
            /// <paramname="e"></param></span>
            protected voidGridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
               //获取当前页的索引</span>
                GridView1.PageIndex  = e.NewPageIndex;
     
               //又一次进行数据绑定</span>
                BindNews();
            }</span>


        通过上面的步骤就能够轻松得到分页的数据了。尽管能够实现想要的结果,可是还存在着一些问题,比方上面的绑定数据方法中绑定的是所有的新闻,每次运行的时候都会查询数据库中所有的记录,当记录达到一定量大的时候比方50万条,100万条等等,这个时候绑定的时候会是多么长的时间。所以将上面的情况定义成为假分页。与其相比,真分页则非常好的攻克了这个问题,以下再来见证一下真分页的奇妙吧:

     

        在分页之前要进行数据查询,所以在这我建立了一个存储过程,用于查询分页数据,详细例如以下:

    <span style="font-size:18px;"><span style="white-space:pre">	</span>ALTER PROCEDURE[dbo].[aspPageChoose]
     
    	</span>@startPageint,
    	</span>@endPageint
    	</span>AS
    	</span>BEGIN
    	----建立暂时表,用于储存</span>
    	</span>withtemptbl as (
    	</span>selectROW_NUMBER() OVER (ORDER BY id desc)as rowNum ,* from news
    	</span>)
    	</span>select* from temptbl  where rowNum between@startPage and @endPage
    	</span>END</span>

        其次是U层的建立,在界面上面放置两个控件,各自是AspNetPageGridView,将这两个控件每页显示的个数设置成相应的数值,最后就是对数据的绑定,进行显示,例如以下

            protected voidPage_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                   //页面第一次载入时调用绑定数据方法</span>
                   anp.RecordCount = <span style="color:#ff0000;">新闻的总数量</span>;
                   int startpage = 1;
                   int endpage =3;
                   DataTable dt = newNewsManager().SelectAspNetPage(startpage, endpage);
                   GridView1.PageSize =endpage - startpage + 1;
                   GridView1.DataSource = dt;
                   GridView1.DataBind();
                }
            }
     
            //进行换页显示数据</span>
            protected voidanp_PageChanged(object sender, EventArgs e)
            {
                int startpage =anp.StartRecordIndex;
                int endpage = anp.EndRecordIndex;
                DataTable dt = newNewsManager().SelectAspNetPage(startpage, endpage);
                GridView1.PageSize = endpage -startpage + 1;
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }</span>

        总结:常说对照出真知,通过上面的对照,能够非常清楚的展示,真分页为我们打开了方便之门,除此之外还给我们编程带来了巨大的优点。上面的纯属自己摸索而来,如有什么不足,还请各位指点指点。

  • 相关阅读:
    km算法
    HDU 1358
    HDU 3746
    CF 432D
    HDU 4725
    14年百度之星资格赛第四题
    AC自动机
    RMQ
    HDU 4635
    HDU 3667
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3830013.html
Copyright © 2011-2022 走看看