asp.net大数据量分页
在Repeater控件里,载入50000多条数据是,浏览器直接报出“System OutofMemoryException”,必须进行分页。在网上查了一下别人是如何解决这个问题的,主要有一下几种,但到目前为止我还一种都没有试过。
一、在分页控件上做文章
事先规定每页显示的数据调试,先查出总的条数,计算出工共有多少页,容易计算出每页对应的数据编号的起始和结束位置。利用这两个值在每次点击分页控件的时候触发查询语句。
具体参见csdn的贴子:http://bbs.csdn.net/topics/320155550。这种实现方法在论坛里有一些争议,但应该是可以实现我的功能要求的。
二、使用数据库的存储过程
思路和第一种方法类似,只是是以存储过程的形式实现的。我至今还没有写过一个存储过程,因此对这个还不熟悉。存储过程其实就是一个数据库里的自定义的函数,输入特定的参数,执行特定功能。
具体实现参考博客:http://www.cnblogs.com/fishtreeyu/archive/2011/01/01/1923808.html。这里最“用存储过程分页”介绍的比较详细,同时也介绍了第一种方法的核心,还有第三种方法。
三、临时表+ROW_NUMBER() OVER
注:ROW_NUMBER() OVER (ORDER BY id desc)为SQL2005新增函数,表示取出每一列的行号,意味着该方法不能兼容,MSSQL SERVER 2000
该函数在数据库查询中可以做的很灵活,可以学习一下: