zoukankan      html  css  js  c++  java
  • GridView+分页存储过程

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

    @strGetFields varchar(1000) = '*',  -- 需要返回的列

    @fldName varchar(255)='',      -- 排序的字段名

    @PageSize   int = 40,          -- 页尺寸

    @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)
    群主(87273411) 09:35:07

  • 相关阅读:
    local_irq_disable和disable_irq的区别
    linux内核IDR机制详解【转】
    飞秋2013设置后无法保存配置问题
    windows 格式化D盘
    query 中 radio选中小技巧
    磁盘碎片整理
    服务器如何选择备案产品类型?
    虚拟主机需要备案吗?
    操作系统自带的截图工具无法保存问题
    CA210彩分仪校准步骤
  • 原文地址:https://www.cnblogs.com/nianshi/p/714992.html
Copyright © 2011-2022 走看看