注册 登录
编程论坛 ASP.NET技术论坛

【版主以及hebingbing还有各位高手请进】求GridVIew自定义分页代码

风风风风 发布于 2008-04-03 22:49, 1018 次点击
GridVIew虽然有内设的分页功能,但是当点下一页是必须从数据库获取所有的数据,我想要是数据小的话还可以,但是如果数据是200000000000这么多了,那么每次翻页不是都要把这么大的数据存入内存,那样的话岂不是太有点那个什么了吧。所以我就到百度搜了搜,但是网上的全是一些什么仅仅是为了美观而设计的,根本就没有涉及到这个问题的解决方案,我有本书是vb写的,有谈到这个问题,可是我又看不懂vb,所以我来这里想各位讨教。
主要,给我回复的不要不看清我的要求就给我乱发,我知道网上GridVIew自定义分页的代码很多,但是我要的不是那种,我要的是解决海量数据不同时加载的问题,还请各位帮忙。
4 回复
#2
冰彩虹2008-04-03 23:00
用存储过程分批取数据吧
#3
srym2008-04-04 01:10
2楼正解!
给你一个存储过程去调用就可以了
GetPaginationRecord2 'jobs','job_id',4,2,'order by job_desc','job_id>3'

create procedure GetPaginationRecord2
@tableName varchar(50),
@fieldKey varchar(20),---主键
@pageSize int = 10,
@pageIndex int = 1,
@sqlOrder varchar(100) = '',---排序字段(order by fieldName [desc|asc])
@sqlWhere varchar(200) = ''
as
 declare @strSQL varchar(5000)
 if @sqlWhere != '' ---有查询字符串
 begin
  set @strSQL = 'select top '+str(@pageSize)+' * from '+@tableName+' '+
                 'where '+@fieldKey+' not in(select top '+str((@pageIndex-1)*@pageSize)+
                 ' '+@fieldKey+' from '+@tableName+' where '+@sqlWhere+' '+@sqlOrder+') and '+@sqlWhere+
                 ' '+@sqlOrder
 end
 else --- 无查询字符串
 begin
  set @strSQL = 'select top '+str(@pageSize)+' * from '+@tableName+' '+
                 'where '+@fieldKey+' not in(select top '+str((@pageIndex-1)*@pageSize)+
                 ' '+@fieldKey+' from '+@tableName+' '+@sqlOrder+') '+@sqlOrder
 end

exec(@strSQL)

drop procedure GetPaginationRecord2
#4
srym2008-04-04 01:11
如果你不想调用,就拼成SQL语句传递参数也可以的!
#5
风风风风2008-04-04 07:30
提示: 作者被禁止或删除 内容自动屏蔽,只有管理员可见
1