ASP.NET分页的处理方式

王朝asp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

参照了多位高手的文章,主要觉得最重要是分页最好用存储过程来处理,返回当前页数据的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+"下一页 末页";

}

请各位高手执教。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有