热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

动态分页实现

Code分页存储过程CREATEprocedurePagersqlstrnvarchar(4000),--查询字符串currentpageint,--第N页pagesizeint-

 

ContractedBlock.gifExpandedBlockStart.gifCode
//分页存储过程

CREATE    procedure Pager
@sqlstr nvarchar(
4000), --查询字符串
@currentpage 
int--第N页
@pagesize 
int --每页行数
as
set nocount on
declare @P1 
int--P1是游标的id
 @rowcount 
int,
 @pagecount 
int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt
=1,@ccopt=1,@rowcount=@rowcount output
 select ceiling(
1.0*@rowcount/@pagesize) as pagecount,@rowcount as recordcount--,@currentpage as 当前页 
set @pagecount = ceiling(1.0*@rowcount/@pagesize)
IF @currentpage
>=@pagecount
   
set @currentpage=@pagecount
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,
16,@currentpage,@pagesize 
exec sp_cursorclose @P1

set nocount off
GO

//实现代码:



//执行分页程序
        public DataTable ExecPager(string sql, int  curPage, int pageSize, out int pageCount , out int recordCount)
        {
            
//Set up a return value
            DataTable dt = new DataTable();
            DataSet ds 
= null;
           
//Create a parameter
            SqlParameter[] parms ={
                XNCJWC.Utility.Common.MakeInParm(
"@sqlstr",SqlDbType.VarChar,4000, sql),
                XNCJWC.Utility.Common.MakeInParm(
"@currentpage",SqlDbType.Int, 4, curPage),
                XNCJWC.Utility.Common.MakeInParm(
"@pagesize",SqlDbType.Int, 4, pageSize)
            };
            
try
            {
                
//Execute the query 
                ds = SqlHelper.ExecuteReaderDataSet(SqlHelper.ConnectionStringLocalTransaction, CommandType.StoredProcedure, "Pager", parms);
                dt 
= ds.Tables[1];
                pageCount 
= Int32.Parse(((DataRow)dt.Rows[0])[0].ToString());
                recordCount 
= Int32.Parse(((DataRow)dt.Rows[0])[1].ToString());
            }
            
catch (Exception e)
            {
                XNCJWC.Utility.Log.Error(e.Message.ToString());

                
throw e;// new Exception("Query Failed");
            }
            
return ds.Tables[2];
        }

   
------------------------------------------------------------------------------------------------------------

pager类:

public class Pager
    {
       
private int _curPage ; //当前页数
       private int _recordCount ;//总记录数
       private int _pageSize  = 20; //每页记录数
       private int _pageCount;  //页数
       private string _strSql;  //sql语句
       private DataTable _dt;    //当前页记录集
          public Pager()
        {
         _curPage 
= 1 ;
         _recordCount 
= 0 ;        
         _pageCount 
= 0;
         _strSql 
= "";
        }
        
public Pager(string  sql, int curpage)
        {
            _recordCount 
= 0;
            _pageCount 
= 0;
            _strSql 
= sql;
            _curPage 
= curpage;
        }
       
/// 
       
/// 分页
       
/// 

        public void StartPage()
        {
            _dt 
= ExecPager(this._strSql, this._curPage, this._pageSize, out _pageCount, out _recordCount);              

        }
        
public int CurPage
        {
            
get { return this._curPage; }
            
set { this._curPage = value; }
        }
        
public int RecordCount
        {
            
get { return this._recordCount; }
            
set { this._recordCount = value; }
        }
        
public int PageSize
        {
            
get { return this._pageSize; }
            
set { this._pageSize = value; }
        }
        
public int PageCount
        {
            
get { return this._pageCount; }
            
set { this._pageCount = value; }
        }
        
public string StrSql
        {
            
get { return this._strSql; }
            
set { this._strSql = value; }
        }

        
public DataTable Dt
        {
            
get { return this._dt; }
            
set { this._dt = value; }
        }
       

    }




转:https://www.cnblogs.com/hubcarl/archive/2009/05/10/1453502.html



推荐阅读
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • Splay Tree 区间操作优化
    本文详细介绍了使用Splay Tree进行区间操作的实现方法,包括插入、删除、修改、翻转和求和等操作。通过这些操作,可以高效地处理动态序列问题,并且代码实现具有一定的挑战性,有助于编程能力的提升。 ... [详细]
  • 本文介绍了一种根据用户选择动态切换屏幕界面的方法,通过定义不同的选择块(Selection Block),实现灵活的用户交互体验。 ... [详细]
  • 探讨在 JavaScript 中使用不同方向的 for 循环来实现跟随鼠标的 div 动画时,为什么会出现不同的视觉效果。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文介绍如何通过 JavaScript 实现一个基于鼠标坐标的 Tooltip 弹出层,详细解释了如何获取窗口和文档的尺寸及滚动位置,并优化了代码结构。 ... [详细]
  • 本文详细介绍了如何在Android 4.4及以上版本中配置WebView以实现内容的自动高度调整和屏幕适配,确保中文显示正常,并提供代码示例。 ... [详细]
  • 本文详细介绍了MySQL中的存储过程,包括其定义、优势与劣势,并提供了创建、调用及删除存储过程的具体示例,旨在帮助开发者更好地利用这一数据库特性。 ... [详细]
  • 本文探讨了如何通过WebBrowser控件在用户点击输入框时自动显示图片验证码。该过程可能涉及JavaScript事件的触发与响应。 ... [详细]
  • 一位女子向诸位神灵提问,探讨命运、爱情、正义等话题,揭示了人性和社会的多重面向。 ... [详细]
author-avatar
mobiledu2502891283
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有