ASP.NET分页的处理方式

参照了多位高手的文章,主要觉得最重要是分页最好用存储过程来处理,返回当前页数据的DataSet。
存储过程如下:
CREATE PROCEDURE dbo.sp_info_page2
(
@pagesize  int,
@currpage  int
)
as
begin
DECLARE  @sqlText AS nvarchar(4000)
if (@currpage=1) set @sqlText='select top '+CAST((@pagesize) as varchar(30))+' * FROM TBL_INFO ORDER BY INFOID DESC'
ELSE
 set @sqlText='select top '+CAST((@pagesize) as varchar(30))+' *  FROM tbl_info
  WHERE (infoid<(SELECT MIN(infoid)
   FROM (SELECT TOP '+CAST((@pagesize*(@currpage-1)) as varchar(30))+' infoid
   FROM tbl_info
   ORDER BY infoid desc) AS T)) ORDER BY infoid desc'

 EXEC(@sqlText)
end
GO

其中主要思路参考http://blog.csdn.net/lihonggen0/archive/2004/09/14/103511.aspx 的第二种方案。
考虑到大多数内容都需要对ID字段进行倒序,所以将存储过程进行了一定的修改。


在通过存储过程返回的DataSet之后,你只需要控制分页标示符就可以了。
首先读取整个整个数据的条目总和,取得总数,再按照页面大小获得页面分页导航字符串。
strPageControl="<a href=info.aspx?currpage=1>首页</a>  ";
     if (intCurrPageNo!=1) strPageControl=strPageControl+"<a href=info.aspx?currpage="+Convert.ToString(intCurrPageNo-1)+">上一页</a>  ";
     else strPageControl=strPageControl+"上一页  ";
     if (intCurrPageNo!=intPageCount)
     {
      strPageControl=strPageControl+"<a href=info.aspx?currpage="+Convert.ToString(intCurrPageNo+1)+">下一页</a>  ";
      strPageControl=strPageControl+"<a href=info.aspx?currpage="+Convert.ToString(intPageCount)+">末页</a>";
     }
     else
     {
      strPageControl=strPageControl+"下一页  末页";
     }

请各位高手执教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值