.net不用gridview如何实现分页 这和是否用GridView无关,它只是个数据呈现控件而已,你可以使用存储过程分页 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 create PROCEDURE PageShow(@tblName varchar(2000), -- 表名@strGetFields varchar(1000) = '*', -- 需要返回的列 @fldName varchar(255)='', -- 排序的字段名@PageSize int = 10, -- 页尺寸@PageIndex int = 1, -- 页码@doCount bit = 0, -- 返回记录总数, 非 0 值则返回@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where))ASdeclare @strSQL varchar(5000) -- 主语句declare @strTmp varchar(110) -- 临时变量declare @strOrder varchar(400) -- 排序类型if @doCount != 0beginif @strWhere !=''set @strSQL = 'select count(*) as Total from ' + @tblName + ' where '+@strWhereelseset @strSQL = 'select count(*) as Total from ' + @tblName + ''end --以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况elsebeginif @OrderType != 0beginset @strTmp = '<(select min'set @strOrder = ' order by ' + @fldName +' desc'--如果@OrderType不是0,就执行降序,这句很重要!endelsebeginset @strTmp = '>(select max'set @strOrder = ' order by ' + @fldName +' asc'endif @PageIndex = 1beginif @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ' + @tblName + ' where ' + @strWhere + ' ' + @strOrderelseset @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '+ @tblName + ' '+ @strOrder--如果是第一页就执行以上代码,这样会加快执行速度endelsebegin--以下代码赋予了@strSQL以真正执行的SQL代码set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '+ @tblName + ' where ' + @fldName + ' ' + @strTmp + '('+ @fldName + ') from (select top ' + str((@PageIndex-1)*@PageSize) + ' '+ @fldName + ' from ' + @tblName + ' ' + @strOrder + ') as tblTmp)'+ @strOrderif @strWhere != ''set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '+ @tblName + ' where ' + @fldName + ' ' + @strTmp + '('+ @fldName + ') from (select top ' + str((@PageIndex-1)*@PageSize) + ' '+ @fldName + ' from ' + @tblName + ' where ' + @strWhere + ' '+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrderend end exec (@strSQL) 当然除了这之外,你还能用一些网上的分页控件,Linq等等,都能实现分页的... 这种select top 的分页方式已经老掉牙了。 试试sql2012最新的分页方法吧 用分页控件:http://www.webdiyer.com gridview 是数据呈现的控件 自带的分页效率很低,都是自己写分页了 MARK 理解透了 自己用拼 HTML就可以实现, 都可以做个 分页控件 就是 查出来 几条数据的 事 翻页的 时候 记住一些 数值 计算就可以的 东西。 先把全部数据读取出来存放在某个div或什么内,然后只显示其中的10条或几个,当点击下一页是显示后面紧挨着的。 关于网站内嵌Google搜索 求助asp.net做的BBS源代码 |zyciis| 如何让我的webBrowser控件过滤掉HTML"<img >" 谢谢 求一思路 asp.net里的哪个控件输出<li>标签 求一正则表达式 Textbox插入数据库问题 asp.net2.0(VS2005)调用js文件的问题!急!! ASP.NET 2.0对客户端脚本的支持改变了吗? C# Active 控件 求大神指点 关于asp.net中form的问题 asp打印图片虚点问题:asp在IE打印图片时虚点
create PROCEDURE PageShow
(
@tblName varchar(2000), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='', -- 排序的字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
)
AS
declare @strSQL varchar(5000) -- 主语句
declare @strTmp varchar(110) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @doCount != 0
begin
if @strWhere !=''
set @strSQL = 'select count(*) as Total from ' + @tblName + ' where '+@strWhere
else
set @strSQL = 'select count(*) as Total from ' + @tblName + ''
end
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况
else
begin
if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by ' + @fldName +' desc'
--如果@OrderType不是0,就执行降序,这句很重要!
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by ' + @fldName +' asc'
end
if @PageIndex = 1
begin
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ' + @tblName + ' where ' + @strWhere + ' ' + @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '+ @tblName + ' '+ @strOrder
--如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '
+ @tblName + ' where ' + @fldName + ' ' + @strTmp + '('+ @fldName + ') from (select top ' + str((@PageIndex-1)*@PageSize) + ' '+ @fldName + ' from ' + @tblName + ' ' + @strOrder + ') as tblTmp)'+ @strOrder
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '
+ @tblName + ' where ' + @fldName + ' ' + @strTmp + '('
+ @fldName + ') from (select top ' + str((@PageIndex-1)*@PageSize) + ' '
+ @fldName + ' from ' + @tblName + ' where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
end
end
exec (@strSQL)
这种select top 的分页方式已经老掉牙了。 试试sql2012最新的分页方法吧
MARK 理解透了 自己用拼 HTML就可以实现, 都可以做个 分页控件 就是 查出来 几条数据的 事 翻页的 时候 记住一些 数值 计算就可以的 东西。