cs页面调用代码:

 public int TotalPage = 0;
    public int PageCurrent = 1;
    public int PageSize = 25;
    public int RowsCount = 0;
    string userid, username;
    public  DataTable dt = new DataTable();
    public string path, userwelcome;
    public string opt,cid;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Request.Params["page"] == null || Request.Params["page"].ToString().Equals(""))
                PageCurrent = 1;
            else
               PageCurrent=int.Parse(Request.Params["page"].ToString());
           this.getPage(out TotalPage, out RowsCount, PageSize, PageCurrent);           
        }
    }

//调用存储过程的函数

private void getPage(out int totalPage, out int rowsCount, int pageSize, int currentPage)
    {
        SqlParameter[] parameters = {
                    new SqlParameter("@TotalPage", SqlDbType.Int,4),
                    new SqlParameter("@RowsCount", SqlDbType.Int,4),
                    new SqlParameter("@PageSize", SqlDbType.Int,4),
                    new SqlParameter("@CurrentPage", SqlDbType.Int,4),
                    new SqlParameter("@SelectFields", SqlDbType.NVarChar,700),
                    new SqlParameter("@IdField",SqlDbType.NVarChar,50),
                    new SqlParameter("@OrderField", SqlDbType.NVarChar,200),
                    new SqlParameter("@OrderType", SqlDbType.NVarChar,2),
                    new SqlParameter("@TableName", SqlDbType.NVarChar,300),
                    new SqlParameter("@strWhere", SqlDbType.NVarChar,300),
                    };
        parameters[0].Direction = ParameterDirection.Output;
        parameters[1].Direction = ParameterDirection.Output;
        parameters[2].Value = pageSize;
        parameters[3].Value = currentPage;
        parameters[4].Value = "a.RLId,a.companyName,a.webSite,a.isRL,a.ordernum,a.isrl,a.userid";
        parameters[5].Value = "a.RLId";

parameters[6].Value = " a.isrl asc , a.orderNum ";
        parameters[7].Value = "1";
        parameters[8].Value = "qiYeRenling a";       
        parameters[9].Value = "1=1";//

DataSet ds = Wm23Abc.DBUtility.DbHelperSQL.RunProcedure("getRecordByPage", parameters, "dt");
        dt = ds.Tables[0];
        totalPage = int.Parse(parameters[0].Value.ToString());
        rowsCount = int.Parse(parameters[1].Value.ToString());
    }

.aspx页面代码:

<table id="SXFSTable" style="width:100%;" class="table">
        <tr><td><b>公司名称</b></td><td><b>公司网址</b></td><td><b>认领状态</b></td></tr>
        <%for (int i = 0; i < dt.Rows.Count; i++)
          {
        %>
        <tr>
            <td><%= dt.Rows[i]["companyName"].ToString() %>排序值:<%= dt.Rows[i]["ordernum"].ToString() %></td>
            <td><%= dt.Rows[i]["webSite"].ToString() %>
            是否认领:<%=dt.Rows [i]["userid"].ToString () %></td>
            <td><%= dt.Rows[i]["isRL"].ToString().Equals("0") ? "<a href=\"javascript:;\" οnclick=\"renLing(event,'"+dt.Rows[i]["RLId"].ToString()+"');\">认领该企业</a>" : "<font color=\"red\">该企业已被认领</font>"%></td>
        </tr>
        <%          
        }
        %>
    </table>
    </div>
    <div style="margin-left:auto; margin-right:auto; width:70%; text-align:left; font-size:9pt;">
            第 <%=PageCurrent %> 页  共 <%=RowsCount %> 条  共 <%=TotalPage%> 页
         <% if (PageCurrent != 1)
            {
            %>
                <a href="test.aspx">首 页</a>
                <a href="test.aspx?page=<%=PageCurrent-1 %>">上一页</a>   
                       
            <%
            }
            if (PageCurrent != TotalPage)
            {
            %>
                <a href="test.aspx?page=<%=PageCurrent+1 %>">下一页</a>
                <a href="test.aspx?page=<%=TotalPage%>">末 页</a>                 
            <%                   
            }
            %>
            </div>

存储过程代码:

CREATE   proc [dbo].[getRecordByPage]
@TotalPage int output,--总页数
@RowsCount int output,--总条数
@PageSize int,--每页多少数据
@CurrentPage int,--当前页数
@SelectFields  nvarchar(1000),--select 语句但是不包含select
@IdField nvarchar(50),--主键列
@OrderField nvarchar(50),--排序字段,如果是多个字段,除最后一个字段外,后面都要加排序条件(asc/desc),不包含order by,最后一个排序字段不用加排序条件
@OrderType nvarchar(4),--1升序,0降序
@TableName nvarchar(200),--表名
@strWhere nvarchar(300)--条件
As
Begin
     declare @RecordCount float
     declare @PageNum int --分页依据数
     Declare @Compare nvarchar(50)--比较字段区分min或者max
     Declare @Compare1 nvarchar(2) --大于号“>” 或者小于号"<“
     Declare @OrderSql nvarchar(10)--排序字段
     declare @Sql nvarchar(4000)
     Declare @TemSql nvarchar(1000)
     Declare @nRd int
     declare @afterRows int
     declare @tempTableName nvarchar(10)
    
     if(@OrderType='1')
        Begin           
            set @OrderSql=' asc'
        End
     Else
        Begin           
            set @OrderSql= ' desc'
        End

if(isnull(@strWhere, '')<>'')
          Set @strWhere = @strWhere 
     if(@strWhere='')
          Set @strWhere=' 1=1 '

Set @TemSql='Select @RecordCount=Count(1) from '+@TableName +' where '+@strWhere
      exec sp_executesql @TemSql,N'@RecordCount float output',@RecordCount output
      Set @RowsCount=@RecordCount
      Set @TotalPage= ceiling(@RecordCount/@PageSize)
      if(@CurrentPage>@TotalPage)
           Set @CurrentPage=@TotalPage
      if(@CurrentPage<1)
           Set @CurrentPage=1
      if(@PageSize<1)
           Set @PageSize=1
      print(@RecordCount)

if(@CurrentPage=1)
         Begin
              set Rowcount @PageSize
              set @Sql='select '+ @SelectFields +' from  '+ @TableName +'  where ' +@strWhere+'  order by '+@OrderField +'

'+@OrderSql +','+@IdField +' asc'
              --print(@Sql)
             exec sp_executeSql @Sql
             
         End
     else if(@CurrentPage=@TotalPage)
         begin
             set @afterRows=@RowsCount-(@CurrentPage-1)*@PageSize
             set RowCount @afterRows
             if(@OrderType='1')
             begin
     set @OrderField=REPLACE(@OrderField,'asc','lai512343975')//这里用变量将asc和desc互换,哈哈,太神了
     set @OrderField=REPLACE(@OrderField,'desc','asc')
     set @OrderField=REPLACE(@OrderField,'lai512343975','desc')
                 set @Sql='select ' + @SelectFields +' from  '+ @TableName +'  where ' +@strWhere+'  order by '+@OrderField +' desc'+','+@IdField +' asc'         
  
             end
             else
             begin
    set @OrderField=REPLACE(@OrderField,'desc','lai512343975')
     set @OrderField=REPLACE(@OrderField,'asc','desc')
     set @OrderField=REPLACE(@OrderField,'lai512343975','asc')
                 set @Sql='select ' + @SelectFields +' from  '+ @TableName +'  where ' +@strWhere+'  order by '+@OrderField +'  asc ' +','+@IdField+ ' asc'
print(@Sql) 
             end
             --print(@Sql)
             exec sp_executeSql @Sql
         end
     else
         Begin
             set @nRd=@PageSize* (@CurrentPage-1)
            print(@nRd)

set RowCount @PageSize            
             set @Sql='select ' +  @SelectFields +' from  '+ @TableName +'  where ' +@strWhere+' and '+@IdField + ' not in (select top '+ cast(@nRd as nvarchar(10))+' '+@IdField+' from '+@TableName+'  where '+ @strWhere+'  order by '+@OrderField +' '+@OrderSql+','+@IdField +' asc) ' + ' order by '+ @OrderField + ' ' +@OrderSql+','+@IdField +' asc'
             exec sp_executeSql @Sql
             --Print(@sql)
         End
end
GO

转载于:https://www.cnblogs.com/jxcia_Lai/archive/2010/06/12/1757339.html

存储过程分页,按多条件排序(原创)相关推荐

  1. mysql通用分页_MySQL海量数据的通用存储过程分页代码

    本节主要内容: MySQL海量数据的通用存储过程分页代码 本节为大家分享一例mysql 通用存储过程分页.海量数据分页的代码. 1,测试用的表结构: 复制代码 代码示例: CREATE TABLE I ...

  2. MS SQLSERVER通用存储过程分页

    最近在面试的时候,遇到个奇葩的秃顶老头面试官. 问:写过存储过程分页吗? 答:没写过,但是我知道分页存储的原理,我自己也写过,只是在工作中没写过. 问:那你这么多年工作中就没写过吗? 答:的确没写过, ...

  3. SQL存储过程分页(通用的拼接SQL语句思路实现)

    多表通用的SQL存储过程分页 案例一: USE [Community] GO/****** Object: StoredProcedure [dbo].[Common_PageList] Script ...

  4. silverlight + wcf(json格式) + sqlserver存储过程分页

    silverlight并没有提供现成的分页控件,百度了一圈,也没有发现aspx中好用的类似AspNetPager成熟控件,网上现有的一些分页代码,很多也是基于1.0版本的,silverlight2.0 ...

  5. [百万级]通用存储过程.分页存储过程

    /*  名称:spAll_ReturnRows  输入:  输出:  调用:   EXEC spAll_ReturnRows 'SELECT  * FROM 表名', 页号, 返回记录数, '主键', ...

  6. Redis实现分页和多条件模糊查询方案

    导言 Redis是一个高效的内存数据库,它支持包括String.List.Set.SortedSet和Hash等数据类型的存储,在Redis中通常根据数据的key查询其value值,Redis没有模糊 ...

  7. 常见存储过程分页PK赛——简单测试分析常见存储过程分页速度

    数据的分页是我们再熟悉不过的功能了,各种各样的分页方式层出不穷.今天我把一些常见的存储过程分页列出来,再简单地测一下性能,算是对知识的总结,也是对您好想法的抛钻引玉.废话不多说,开始吧~~ 1.首先建 ...

  8. sql 存储过程 分页

    ---存储过程:分页,获得第@endrecord-@num+1条到第@endrecord条记录的研报信息 IF exists (select * from SysObjects where name= ...

  9. python 排序 sorted 如果第一个条件 相同 则按第二个条件排序

    python 排序 sorted 如果第一个条件 相同 则按第二个条件排序 怎样遍历一个list  符合下列条件 1. 按照元组的第一个从小到大排序 2. 如果第一个相同  则按照元组第2个从大到小 ...

最新文章

  1. c语言的标准字符,C语言标准定义的32个关键字
  2. PHP快速入门教程:WHILE循环示例
  3. css overflow属性的测试
  4. for(;;)函数中判断条件执行顺序
  5. 易于使用的人工智能_通过AI使网络更易于访问
  6. 软件工程的迷途和沉思
  7. 测试Word2013发布博客
  8. word中带圈字符字体显示大小和位置不正常
  9. 全球首个AI公园亮相北京海淀区
  10. OpenCV-python安装教程
  11. python提取发票信息发票识别_分享一个电子发票信息提取工具(Python)
  12. PAT : 基础编程题目集_函数题答案(6-1 ~ 6-13)(C语言)
  13. 什么是函数?什么是无参函数?什么是返回值?函数的分类?
  14. 百度2018营收破千亿,AI成发展主要驱动力
  15. Weird Rounding
  16. 程序语言Python Tutorial(一):激发你的欲望 程序语言
  17. 那一阙词,早已波澜-仓央嘉措
  18. Linux期末复习考前走一走——何绍华Linux操作系统第3版
  19. 华为ensp Cloud连接使用及创建环回适配器网卡
  20. R语言3.12 对应分析

热门文章

  1. 【机器学习】SVM学习(三):线性分类器的求解
  2. Keras运行代码时出现的问题及解决方法
  3. Leetcode 146. LRU缓存机制 解题思路及C++实现
  4. 如何复制一个含有随机指针节点的链表
  5. JavaScript 运行机制详解
  6. fastjson的值过滤器ValueFilter || fastjson输出字段为Null的两种
  7. Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片实例演示及原理剖析
  8. vbs控制电脑说话,vbs获取时间,vbs小程序
  9. 参考文献找不全页码?
  10. C++ for循环跳过某一项求和