牛腩新闻发布系统 (五)如何让你的文章学会分页

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Delicious_Life/article/details/84389833

分页

在软件开发的过程中,那些最常见的东西我们常常会忽略。例如这个"分页"。“分页”也有“真假”之说。

假分页:从数据库中一次性选择所有数据,再将所有数据根据每页显示多少条记录进行分类。其缺点是在数据比较多时,加载时间会长,优点使可以减少和后台的交互次数。

真分页:只从数据库中选择当前页的数据,跳转下一页是再次读取。缺点是与后台交互次数比较多,优点使每次加载速度比较快。

接下来笔者就以真分页为例,实现下图新闻的分页

实现分页

 <1>编写存储过程。分页针对的是查询到的数据,所以这里涉及到数据库的操作。按照如下代码,新建你的存储过程

<2> 在D层调用存储过程。笔者在D层NewsDAO文件中编写代码,目的是实现显示出的新闻内容分页

        # region 显示新闻分页
        /// <summary>
        /// 新闻分页显示
        /// </summary>
        /// <param name="start">开始</param>
        /// <param name="end">结束</param>
        /// <returns></returns>
        public DataTable SelectPage(int start, int end)
        {
            DataTable dt = new DataTable();
            string cmdText = "procNewsSelectPage";
            SqlParameter[] paras = new SqlParameter[] {
                new SqlParameter("@start",start),
                new SqlParameter("@end",end),
            };
            dt = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.StoredProcedure);
            return dt;
        }
        #endregion

<3>在Web层中添加分页控件AspNetPager,并完善此控件代码。笔者在newsmanager.aspx文件中添加的代码

            <webdiyer:AspNetPager ID="anp" runat="server" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页" OnPageChanged="anp_PageChanged" PageSize="5" AlwaysShow="true">
            </webdiyer:AspNetPager>

<4>B层对应代码。笔者写在了B层NewsManager文件里

        #region 新闻分页
        //分页
        public DataTable SelectNewsByPage(int start, int end)
        {
            return ndao.SelectPage(start, end);
        }
        #endregion

<5>在Web层新闻管理newsmanager.aspx.cs后台编写代码。由于后台文件中其他功能已写入代码,笔者只列出分页功能需要加的代码

        protected void Page_Load(object sender, EventArgs e)
        {

            //判断session里面是否存在管理员
            if (Session["admin"] != null && Session["admin"].ToString() == "niunan")
            {
                //已登录
                if (!Page.IsPostBack)
                {
                    anp.RecordCount = dt.Rows.Count;
                    BindNews();
                }
            }
            else
            {

            }
        }



        #region 绑定新闻列表
        private void BindNews()
        {
            int start = anp.StartRecordIndex;
            int end = anp.EndRecordIndex;
            repNews.DataSource = new NewsManager().SelectNewsByPage(start,end);
            repNews.DataBind();
        }
        #endregion

        protected void anp_PageChanged(object sender, EventArgs e)
        {
            BindNews();
        }

<6>重新生成下文件,分页功能便出来了~

 

猜你喜欢

转载自blog.csdn.net/Delicious_Life/article/details/84389833