前言
新闻发布系统整体做完有一段时间了,整体来说还是非常棒的,涉及的知识面和点都非常的多。我目前还只能是盲人摸象,只感受到了其伟大。至于细节,我还是小白,目前还只是初步接触到BS的强大。一个简单的分页管理我做了好几天都做不出来,最后干脆放了好几天,今天突然明白自己的错误在哪里了,果然很快出来了效果。
效果图
简介
假分页:一次性从数据库中查出所有的记录,但是用户在前端可以按页查看。
真分页:每次只从数据库中取出相应的记录,随需随取。
*其实真分页在数据量小的系统中还好,如果是到了数据量很大的系统,那么这个结果可是不敢想象。
假分页
假分页我们可以利用 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();
}
真分页
真分页非常的实用,真分页适合用于数据量比较大的时候,用分页控件实现真分页的优点是灵活。它使得显示数据和分页实现分离,数据可以来自任何数据源,而且还可以自定义显示样式。
-
aspx文件中的代码,主要是用来设计样式用的:
<webdiyer:AspNetPager ID="anp" CssClass="aspnetpager" LayoutType="Table" NumericButtonCount="6" UrlPaging="true"
PageSize="5" runat="server" HorizontalAlign="Center" OnPageChanged="anp_PageChanged"
CustomInfoHTML="第 <font color='red'><b>%CurrentPageIndex%</b></font> 页 , 共 %PageCount% 页"
ShowCustomInfoSection="Left" AlwaysShow="true" ShowPageIndexBox="Always" TextBeforePageIndexBox="转到第"
TextAfterPageIndexBox="页" SubmitButtonText="Go">
</webdiyer:AspNetPager>
-
后台数据绑定:
public partial class admin_newsmanager : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//判断session里面是否存在管理员
if (Session ["admin"] !=null && Session["admin"].ToString ()=="Jason" )
{
//已登录
if (!Page.IsPostBack)
{
anp.RecordCount = new NewsManager().SelectAll().Rows.Count;
BindNews();
}
}
else
{
//未登录
Response.Redirect("login.aspx");
}
}
#region 绑定新闻列表
private void BindNews()
{
int startIndex = anp.StartRecordIndex;
int endIndex = anp.EndRecordIndex;
DataTable dt = new NewsManager().SelectNewsByPage(startIndex, endIndex);
repNews.DataSource = dt;
repNews.DataBind();
}
#endregion
protected void anp_PageChanged(object sender, EventArgs e)
{
BindNews();
}
总结
每次实现了自己想实现的功能的时候,那种喜悦,只有经历过的人才知道。