前言
牛腩老师在视频的末尾讲到了真假分页技术,所谓分页就是当数据量比较大的时候,并不是给用户展示出全部的数据,而是只展示一部分。但是分页也分为真分页和假分页,下面就总结一下什么是真分页,什么是假分页。
真假分页简介
假分页:一次性从数据库中查出所有的记录,但是用户在前端可以按页查看。
真分页:每次只从数据库中取出相应的记录,随需随取。
假分页
假分页我们可以利用 ASP.NET 自带的 GridView 控件,优点是简单。
首先将 GridView 控件的 AllowPaging 属性改为 True,开启分页功能。其次可以设置 PageSize 这个属性,即一页显示多少条记录。最后编写代码就可以了。
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
BindNews();
}
private void BindNews()
{
DataTable dt = new NewsManager().SelectAll();
repNews.DataSource = dt;
repNews.DataBind();
}
真分页
真分页适合用于数据量比较大的时候,用分页控件实现真分页的优点是灵活。它使得显示数据和分页实现分离,数据可以来自任何数据源,而且还可以自定义显示样式。
牛腩老师在视频中向我们介绍了一个分页控件:AspNetPager,下载地址:分页控件。除了下载之外,还可以利用 VS 的 Nuget包管理器,直接在程序包管理器控制台中输入以下命令:Install-Package AspNetPager_CN -Version 7.5.1
敲下回车之后,dll文件就会自动加到 bin 目录下,然后再将这个控件添加到工具箱中,就可以直接使用了。
接下来编写代码就可以了:首先在aspx文件中设计好分页控件的样式
<webdiyer:AspNetPager
ID="AspNetPager1" CssClass="aspnetpager" LayoutType="Table" NumericButtonCount="6" UrlPaging="true"
PageSize="5" runat="server" HorizontalAlign="Center" OnPageChanged="AspNetPager1_PageChanged"
PagingButtonType="Image" Width="100%" ImagePath="/images/" ButtonImageNameExtension="n"
ButtonImageExtension=".gif" DisabledButtonImageNameExtension="g" CpiButtonImageNameExtension="r"
PagingButtonSpacing="10px" ButtonImageAlign="left"
CustomInfoHTML="第 <font color='red'><b>%CurrentPageIndex%</b></font> 页 , 共 %PageCount% 页"
ShowCustomInfoSection="Left" AlwaysShow="true" ShowPageIndexBox="Always" TextBeforePageIndexBox="转到第"
TextAfterPageIndexBox="页" SubmitButtonText="Go">
</webdiyer:AspNetPager>
其次就是在后台代码中绑定数据了
protected void Page_Load(object sender, EventArgs e)
{
if (Session["admin"] != null && Session["admin"].ToString() == "niunan")
{
if (!Page.IsPostBack)
{
//获取记录的总数,这个一定要写,否则界面上不会显示数据
AspNetPager1.RecordCount = new NewsManager().SelectAll().Rows.Count;
BindNews();
}
}
else
{
Response.Redirect("login.aspx");
}
}
//绑定新闻
private void BindNews()
{
int startIndex = AspNetPager1.StartRecordIndex;
int endIndex = AspNetPager1.EndRecordIndex;
DataTable dt = new NewsManager().SelectPageNews(startIndex, endIndex);
repNews.DataSource = dt;
repNews.DataBind();
}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
BindNews();
}
下面是效果图:
后语
如果想更多的了解分页控件如何使用的话,http://www.webdiyer.com/aspnetpager/ 这个网站介绍的很详细,有帮助文档还有在线示例,对此控件的各个属性介绍的很详细。上面显示的样式就是使用的图片按钮,如果对上面的代码中有不理解的地方,请参照此网站。