AspNetPager——真假分页

前言

新闻发布系统整体做完有一段时间了,整体来说还是非常棒的,涉及的知识面和点都非常的多。我目前还只能是盲人摸象,只感受到了其伟大。至于细节,我还是小白,目前还只是初步接触到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();
    }

总结

每次实现了自己想实现的功能的时候,那种喜悦,只有经历过的人才知道。

发布了133 篇原创文章 · 获赞 70 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/whc888666/article/details/98471488
今日推荐