[转载]asp.net中使用Row_Number函数分页

        网上的文章都是使用top之类的SQLServer2000中的方法分页,其实SQLServer2005之后的Row_Number()函数分页才是最好的方法,语句简单、思路清晰,可能是VS2008对Row_Number函数支持不好,不能自动生成,造成很多人不用它吧,下面分享一下我用Row_Number函数实现分页的过程。

a) 首先在DataAdapter中新建名字为QueryThreadCountByForumId、返回值为Scalar的Query,SQL语句为:SELECT COUNT(*) AS Expr1 FROM rp_threads WHERE (ForumId = @ForumId)

b) 在DataAdapter中新建名为字GetDataByForumId的Query,SQL语句为:SELECT * FROM (SELECT ThreadId, IsVisible, LastUpdateDate, DateLine, Subject, ForumId, ROW_NUMBER() OVER (ORDER BY DateLine) rownum FROM rp_threads WHERE ForumId = @ForumId) t WHERE rownum > @startRowIndex AND rownum <= @startRowIndex + @maximumRows。由于VS2008的设计器不支持窗口函数Over,因此会提示警告,不管它。对于使用Over的语句,VS2008不会帮助生成DataSet字段和参数,不过好在默认的GetData语句已经帮我们生成好了字段,虽然GetDataByForumId比GetData多一个rownum字段,不过新建的Query只要不是比GetData生成的字段少就行,多的部分会忽略。下面主要工作是手动建参数,选中GetDataByForumId方法,修改Parameters属性,在其中建三个Int32类型属性ForumId、startRowIndex、maximumRows,各自对应的ParameterName分别填@ForumId、@startRowIndex、@maximumRows。

c) 在界面中使用ObjectDataSource数据源,TypeName填DataAdapter的类名,SelectCountMethod填QueryThreadCountByForumId、SelectMethod填GetDataByForumId,SelectParameters使用ForumId这一个属性,默认生成的maximumRows、startRowIndex 删掉就行,因为分页会自动填充他们两个。

 

文章转载自:http://www.rupeng.com/forum/thread-11334-1-1-uid7.html 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值