GridView+分页存储过程

前端之家收集整理的这篇文章主要介绍了GridView+分页存储过程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

<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

猜你在找的MsSQL相关文章