本文主要是介绍Web之真假分页,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在web设计中一个无法避免的问题就是分页显示。当数据量特别大的时候,我们不可能将所有的数据都在一个页面进行显示,如果这样将严重影响到它的美观性。所以在这个时候,分页显示则成为了我们的大功臣。当然分页也分两种,一种是真分页,一种是假分页,即:
假分页:从数据库中选择所有记录后在分页。
真分页:从数据库中选择当前页的记录
首先先来说一下自带的分页功能(假分页):
在.net中的GridView控件就自带分页显示功能,当然操作很简单,总共分成两步:
1、在界面添加一个GridView控件,设置其属性AllowPaging的值为True,PageSize的值为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层的建立,在界面上面放置两个控件,分别是AspNetPage和GridView,将这两个控件每页显示的个数设置成对应的数值,最后就是对数据的绑定,进行显示,如下
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>
总结:常说对比出真知,通过上面的对比,可以很清楚的展示,真分页为我们打开了方便之门,除此之外还给我们编程带来了巨大的好处。上面的纯属自己摸索而来,如有什么不足,还请各位指点指点。
这篇关于Web之真假分页的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!