ASP分页

一:分类

假分页:是把所有的记录都从数据库种取出来,然后再把这些记录分页

真分页:先分页,再把对应页的记录从数据库中取出来

比较:真分页效率较高,因为每次只需取出所需的内容,相对来说,去的内容较少,执行就快了


二:真分页

1.下载AspNetPager.dll,提取密码为eyyp

2.工具箱右击——选择项——添加AspNetPager.dll文件

3.将该控件拉到.asp的设计页面中的相应位置

4.在源代码中修改代码为:

        <webdiyer:AspNetPager ID="anp" runat="server" OnPageChanged="anp_PageChanged" PageSize="5">
        </webdiyer:AspNetPager>

5.双击AspNetPager控件,进入PageChanged事件的编写(即当页改变时):

protected void anp_PageChanged(object sender, EventArgs e)
    {
        int startPageIndex = anp.StartRecordIndex;
        int endPageIndex = anp.EndRecordIndex;
        BindNews(startPageIndex,endPageIndex);        
    }

 Load加载代码:

anp.RecordCount = new NewsManager().SelectAll().Rows.Count;
BindNews(1,5);

 方法BindNews(绑定数据源的代码抽象出来了):

protected void BindNews(int startPage,int endPage)
    {
        DataTable dt = new NewsManager().selectPageNews(startPage, endPage);
        repNews.DataSource = dt;
        repNews.DataBind();
    }


 D层代码:

public DataTable selectPageNews(int startPage,int endPage)
        {
            SqlParameter[] paras = new SqlParameter[] {
                new SqlParameter("@startPage",startPage),
                new SqlParameter("@endPage",endPage)
            };
            DataTable dt = sqlHelper.ExecuteQuery("news_selectPageNews",paras, CommandType.StoredProcedure);
            return dt;
        }


 存储过程:

ALTER PROCEDURE [dbo].[news_selectPageNews]
	 @startPage int,
	 @endPage int
AS
BEGIN
	with temptbl as
(
	select ROW_NUMBER() over (order by id desc)As 行号, * from news
	)
	
select * from temptbl where 行号 between @startPage and @endPage
END

(临时表的建立和使用必需一块执行,如果光建临时表会执行不成功的)
PageSize:每页的大小

RecordCount:记录的总条数

根据以上两个属性,可确定一共有几页,所以以上两个属性是必须有的属性

三:可能出现的问题:

1>页面在第一次加载时还是把所有的记录都显示在第一页上,当点击每页时有显示正常,这是因为在加载时,给repter绑定数据源时绑定的是所有的记录

我这把加载时第一页绑定数据源默认为1-5条记录,重用了一下存储过程,因为我的PageSize设置的是5(为保持一致)

2>如果加载时,不设置RecordCount属性,只会显示第一页的内容,且不会出现AspNetPager控件

四:总结

实践会掌握更多,更能开阔代码思维

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值