<p style="FONT-SIZE: 10pt">存储过程中的参数可以只有2个:第几页和每页的行数总行数的可以使用简单的SELECT COUNT(1) FROM TableName来完成,总页就是总行数/每页的行数。把这几个算出来的数填充到GridView相应的属性中。当点第几页的时候,再调用分页存储过程来刷新数据,就可以了。 群主(87273411) 09:34:52create PROCEDURE Sp_Conn_Sort(@tblName varchar(255), -- 表名

<p style="FONT-SIZE: 10pt">@strGetFields varchar(1000) = '', -- 需要返回的列

<p style="FONT-SIZE: 10pt">@fldName varchar(255)='', -- 排序的字段名

<p style="FONT-SIZE: 10pt">@PageSize int = 40, -- 页尺寸

<p style="FONT-SIZE: 10pt">@PageIndex int = 1, -- 页码

<p style="FONT-SIZE: 10pt">@doCount bit = 0, -- 返回记录总数,非 0 值则返回

<p style="FONT-SIZE: 10pt">@OrderType bit = 0, -- 设置排序类型,非 0 值则降序@strWhere varchar(1500)='' -- 查询条件 (注意: 不要加 where))AS

<p style="FONT-SIZE: 10pt">declare @strSQL varchar(5000) -- 主语句

<p style="FONT-SIZE: 10pt">declare @strTmp varchar(110) -- 临时变量

<p style="FONT-SIZE: 10pt">declare @strOrder varchar(400) -- 排序类型

<p style="FONT-SIZE: 10pt">

<p style="FONT-SIZE: 10pt">if @doCount != 0

<p style="FONT-SIZE: 10pt"> begin

<p style="FONT-SIZE: 10pt"> if @strWhere !=''

<p style="FONT-SIZE: 10pt"> set @strSQL = 'select count() as Total from ' + @tblName + ' where <a href="mailto:'+@strWhere">'+@strWhere

<p style="FONT-SIZE: 10pt"> else

<p style="FONT-SIZE: 10pt"> set @strSQL = 'select count() as Total from ' + @tblName

<p style="FONT-SIZE: 10pt"> end

<p style="FONT-SIZE: 10pt">--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况

<p style="FONT-SIZE: 10pt">else

<p style="FONT-SIZE: 10pt">begin

<p style="FONT-SIZE: 10pt">

<p style="FONT-SIZE: 10pt">if @OrderType != 0

<p style="FONT-SIZE: 10pt">begin

<p style="FONT-SIZE: 10pt"> set @strTmp = '<(select min'

<p style="FONT-SIZE: 10pt">set @strOrder = ' order by ' + @fldName +' desc'

<p style="FONT-SIZE: 10pt">--如果@OrderType不是0,就执行降序,这句很重要!

<p style="FONT-SIZE: 10pt">end

<p style="FONT-SIZE: 10pt">else

<p style="FONT-SIZE: 10pt">begin

<p style="FONT-SIZE: 10pt"> set @strTmp = '>(select max'

<p style="FONT-SIZE: 10pt"> set @strOrder = ' order by ' + @fldName +' asc'

<p style="FONT-SIZE: 10pt">end

<p style="FONT-SIZE: 10pt">

<p style="FONT-SIZE: 10pt">if @PageIndex = 1

<p style="FONT-SIZE: 10pt">begin

<p style="FONT-SIZE: 10pt"> if @strWhere != ''

<p style="FONT-SIZE: 10pt"> set @strSQL = 'select top ' + str(@PageSize) +' <a href="mailto:'+@strGetFields">'+@strGetFields+ ' from ' + @tblName + ' where ' + @strWhere + ' ' + @strOrder

<p style="FONT-SIZE: 10pt"> else

<p style="FONT-SIZE: 10pt"> set @strSQL = 'select top ' + str(@PageSize) +' <a href="mailto:'+@strGetFields">'+@strGetFields+ ' from '+ @tblName + ' '+ @strOrder

<p style="FONT-SIZE: 10pt">--如果是第一页就执行以上代码,这样会加快执行速度

<p style="FONT-SIZE: 10pt">end

<p style="FONT-SIZE: 10pt">else

<p style="FONT-SIZE: 10pt">begin

<p style="FONT-SIZE: 10pt">--以下代码赋予了@strSQL以真正执行的SQL代码

<p style="FONT-SIZE: 10pt">set @strSQL = 'select top ' + str(@PageSize) +' <a href="mailto:'+@strGetFields">'+@strGetFields+ ' from '

<p style="FONT-SIZE: 10pt"> + @tblName + ' where ' + @fldName + '' + @strTmp + '('+ @fldName + ') from (select top ' + str((@PageIndex-1)@PageSize) + ' '+ @fldName + ' from ' + @tblName + '' + @strOrder + ') as tblTmp)'+ @strOrder

<p style="FONT-SIZE: 10pt">

<p style="FONT-SIZE: 10pt">if @strWhere != ''

<p style="FONT-SIZE: 10pt"> set @strSQL = 'select top ' + str(@PageSize) +' <a href="mailto:'+@strGetFields">'+@strGetFields+ ' from '

<p style="FONT-SIZE: 10pt"> + @tblName + ' where ' + @fldName + '' + @strTmp + '('

<p style="FONT-SIZE: 10pt"> + @fldName + ') from (select top ' + str((@PageIndex-1)*@PageSize) + ' '

<p style="FONT-SIZE: 10pt"> + @fldName + ' from ' + @tblName + ' where ' + @strWhere + ' '

<p style="FONT-SIZE: 10pt"> + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

<p style="FONT-SIZE: 10pt">end

<p style="FONT-SIZE: 10pt">end

<p style="FONT-SIZE: 10pt">exec (@strSQL) 群主(87273411) 09:35:07

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。