AspNetPager真假分页

通过一步一步的完善牛腩新闻发布系统,今天把分页这块做好了,挺开心的,下面来总结一下。

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

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


真分页的实现:

1.下载AspNetPage的dll文件

2.添加引用:



3.代码实现

建立存储过程

USE [newssystem]
GO
/****** Object:  StoredProcedure [dbo].[procNewsSelectPage]    Script Date: 2017-08-20 10:32:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		牛千千
-- Create date: 2017-08-19
-- Description:	真分页
-- =============================================
ALTER PROCEDURE [dbo].[procNewsSelectPage]
	@startrecord integer,
	@endrecord integer
AS
BEGIN
	with temptbl as (
    select ROW_NUMBER() over (order by id desc) as 行号, * from news)
    select * from temptbl where 行号 between @startrecord and @endrecord  


	SET NOCOUNT ON;
    
END

DAL调用存储过程

 public DataTable Paging(int  startrecord,int  endrecord)
        {
            // 新闻分页
            DataTable dt = new DataTable();
            string cmdText = "procNewsSelectPage";
            SqlParameter[] paras = new SqlParameter[] {
                new SqlParameter ("@startrecord",startrecord ),  
                new SqlParameter ("@endrecord",endrecord )  
            };
            dt  = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.StoredProcedure);
            return dt; 
            
        }
BLL层调用DAL层

public DataTable Paging(int  startrecord, int  endrecord)
        {
            // 新闻分页
            return ndao.Paging(startrecord, endrecord);

        }

Web层:在新闻管理newsmanager.aspx添加ASPNetPage控件,然后修改分页控件的样式

<webdiyer:AspNetPager ID="AspNetPager1" runat="server" OnPageChanged="AspNetPager1_PageChanged2" FirstPageText ="首页" LastPageText ="尾页"
 NextPageText ="下页" PrevPageText ="上页" PageSize ="5" AlwaysShow="True"> </webdiyer:AspNetPager>
在新闻管理后台newsmanager.aspx.cs编写代码

protected void Page_Load(object sender, EventArgs e)
        {
            //判断session里是否存在管理员
            if (Session["admin"] != null && Session["admin"].ToString() == "niunan")
            {
                //已登录
                if (!Page.IsPostBack)
                {
                    AspNetPager1.RecordCount = new NewsManager ().SelectAll().Rows.Count;
                    BindNews();
                }

            }
            else
            {
                //未登录
                Response.Redirect("login.aspx");
            }

        }
     
        #region 绑定新闻列表
        private void BindNews()
        {
            
            int  startrecord=AspNetPager1 .StartRecordIndex ;
            int   endrecord=AspNetPager1 .EndRecordIndex ;
            repNews.DataSource = new NewsManager ().Paging (startrecord,endrecord);
            repNews.DataBind();
        }
        #endregion



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

最终效果图



假分页的实现

利用GridView进行分页,现将所有数据都取出来,然后根据页码显示信息。

AllowPaging属性设置为TRUE(允许分页),PageSize设置为具体的数字(每页显示的条数)

/// <summary>  
        /// 加载页面时,绑定数据  
        /// </summary>  
        /// <param name="sender"></param>  
        /// <param name="e"></param>  
        protected void Page_Load(object sender, EventArgs e)  
        {  
            if (!Page.IsPostBack)  
            {  
                BindNews();  
            }  
        }  
  
        private void BindNews()  
        {  
            GridView1.DataSource = new NewsManager().SelectAll();     //查询所有数据并绑定  
            GridView1.DataBind();  
        }  
  
        /// <summary>  
        /// 实现跳页时数据更新  
        /// </summary>  
        /// <param name="sender"></param>  
        /// <param name="e"></param>  
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)  
        {  
            GridView1.PageIndex  = e.NewPageIndex;  
            BindNews();  
        }  

这是真假分页,不断积累不断进步。





1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值