第一、首先在sqlserver中创建一个存储过程

USE [BZY]
GO
/****** 对象: StoredProcedure [dbo].[up_ProcCustomPage2005_New] 脚本日期: 12/24/2013 11:17:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO -- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[up_ProcCustomPage2005_New]
@SelectSql varchar()
,@OrderBy varchar()
,@PageSize int
,@PageIndex int
,@PageCount int output
,@RecordCount int output
AS --SET @SelectSql = 'select * from table_3'
--SET @OrderBy = 'order by id desc' Declare @sql nvarchar()
SET @sql = 'select @RecourdCount = count(*) from (' + @SelectSql + ') as tt@#$'
EXEC sp_executesql @sql,N'@RecourdCount int OUTPUT',@RecordCount OUTPUT SET @PageCount = CEILING( (@RecordCount + 0.0) / @PageSize) IF @PageIndex > @PageCount
SET @PageIndex = @PageCount IF @PageIndex <
SET @PageIndex = DECLARE @StartIndex int
DECLARE @EndIndex int SET @StartIndex = (@PageIndex-) * @PageSize +
SET @EndIndex = @PageIndex * @PageSize SET @sql = 'select * from (select row_number()over(' + @OrderBy + ') as rownumber,* from (' + @SelectSql + ') AS tt@#$) as tt@#$result where rownumber between ' + cast(@StartIndex AS varchar) + ' and ' + cast(@EndIndex AS varchar)
PRINT @sql
EXEC sp_executesql @sql

二、c#代码:

        private static DataTable GetExecuteCustomPage_New(string selectSql, string orderBy, int pageSize, int pageIndex, out int pageCount, out int recordCount)
{
MatchCollection mc = Regex.Matches(orderBy, @"([^ ]*)\.[^ ]*"); if (mc.Count > )
{
foreach (Match item in mc)
{
orderBy = orderBy.Replace(item.Groups[].Value + ".", "");
}
} SqlParameter SelectSql = new SqlParameter() { ParameterName = "@SelectSql", Size = , Value = selectSql };
SqlParameter OrderBy = new SqlParameter() { ParameterName = "@OrderBy", Size = , Value = orderBy };
SqlParameter PageSize = new SqlParameter() { ParameterName = "@PageSize", Size = , Value = pageSize , DbType = DbType.Int32 };
SqlParameter PageIndex = new SqlParameter() { ParameterName = "@PageIndex", Size = , Value = pageIndex , DbType = DbType.Int32 };
SqlParameter PageCount = new SqlParameter() { ParameterName = "@PageCount", Size = , Direction = ParameterDirection.Output , DbType = DbType.Int32 };
SqlParameter RecordCount = new SqlParameter() { ParameterName = "@RecordCount", Size = , Direction = ParameterDirection.Output , DbType = DbType.Int32 }; DataSet ds = new DataSet(); using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConfig"].ToString()))
{
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText = "up_ProcCustomPage2005_New";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = cnn;
cmd.Parameters.Add(SelectSql);
cmd.Parameters.Add(OrderBy);
cmd.Parameters.Add(PageSize);
cmd.Parameters.Add(PageIndex);
cmd.Parameters.Add(PageCount);
cmd.Parameters.Add(RecordCount);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
cnn.Open();
sda.Fill(ds); pageCount = Convert.ToInt32(PageCount.Value);
recordCount = Convert.ToInt32(RecordCount.Value);
} return ds.Tables[]; }

三、引用例子

public DataSet GetPurchaserSalesVolumeAnalysis(string where,
string sFilter_Condition, int iPage_Size, int iPage_Index, string sTaxisField,
int iTaxis_Sign, out int iPageCount, out int iiRecord_Count)
{ string sql = @"select NewT.ptPaymentDate,NewT.fsStatus from Student NewT ";string orderwhere = " ORDER BY NewT.ptPaymentDate ";
return BaitourDAO.Common.DBHelper.GetExecuteCustomPage_New(
sql
, orderwhere
, iPage_Size
, iPage_Index
, out iPageCount
, out iiRecord_Count);
}

sql server高效分页控件及c#调用实例的更多相关文章

  1. mysql 高效分页控件及c#调用实例

    第一.首先在mysql中创建一个存储过程 BEGIN /* @selectSql VARCHAR(5000), --sql语句 @orderWhere VARCHAR(200), --排序条件 @pa ...

  2. 纯手写分页控件CSS+JS+SQL

    Asp.net中虽然用DataPager配合ListView可以实现分页显示,但是有时候由于开发环境等问题不能用到DataPager控件,那么自己手工写一个分页控件就很有必要了,当然,最重要的是通用性 ...

  3. C# DataGridView自定义分页控件

    好些日子不仔细写C#代码了,现在主要是Java项目,C#.Net相关项目不多了,有点手生了,以下代码不足之处望各位提出建议和批评. 近日闲来无事想研究一下自定义控件,虽然之前也看过,那也仅限于皮毛,粗 ...

  4. 【转】AspNetPager分页控件用法

    AspNetPager分页控件解决了分页中的很多问题,直接采用该控件进行分页处理,会将繁琐的分页工作变得简单化,下面是我如何使用AspNetPager控件进行分页处理的详细代码: 1.首先到www.w ...

  5. Atitit.列表页面and条件查询的实现最佳实践(2)------翻页 分页 控件的实现java .net php

    )------翻页 分页 控件的实现java .net php 1. 关于翻页有关的几大控件::搜索框控件,显示表格控件,翻页器,数据源控件.. 1 2. 翻页的显示格式:: 1 2.1. 通常ui- ...

  6. 分页控件AspNetPager学习笔记

    1.AspNetPager简介 AspNetPager是一款开源.简单易用.可定制化等等各种优点的Web分页控件. 2.使用方法 1)下载AspNetPager.dll文件(http://www.we ...

  7. C# devexpress gridcontrol 分页 控件制作

    这个小小的功能实现起来还是有一点点复杂, 分页单独一个usercontrol 出来,导致查询换页 与gridcontrol页面分离,  一般通过换页事件通知girdcontrol 做出查询 查询来说有 ...

  8. Web用户控件开发--分页控件

    分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一些可以分页的数据控件,但其分页功能并不尽如人意.本文对于这些数据控件的假分页暂且不表,如有不明白的同学请百Google度之. ...

  9. AspNetPager.dll 分页控件使用

    今天在用.net 做网站的时候,用到了DATALIST,但是datalist 没有自带的分页控件,后来在网上找了好长时间,看了aspnetpager.dll这个控件,这个控件挺好用的.我把使用方法写出 ...

随机推荐

  1. 基于toyix的进程和轻权进程的学习

    我们在平时的计算机课上学习过进程,知道程序的执行的背后其实就是进程在进行一些操作.大家都知道打开windows的任务管理器可以看到正在运行的进程,当程序卡死时,可以在任务管理器里强制关闭相关程序的进程 ...

  2. 在docker以FPM-PHP运行php,慢日志导致的BUG分析

    问题描述: 最近将IOS书城容器化,切换流量后.正常的业务测试了一般,都没发现问题.线上的错误监控系统也没有报警,以为迁移工作又告一段落了,暗暗的松了一口气.紧接着,报警邮件来了,查看发现是一个苹果支 ...

  3. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  4. Struct2(三) Struct2 标签

    在上一篇 Struct2(二)中,我们新建了工程Struct2test用来验证hello World 程序,在index.jsp中,我们添加了一个Struct2 uri 标签用来创建一个指向hello ...

  5. 15个提高编程技巧的JavaScript工具

    原文地址:http://www.imooc.com/wenda/detail/243523 JavaScript脚本库是一个预先用JavaScript语言写好的库,它方便了我们开发基于JavaScri ...

  6. POJ2828---线段树与逆序数&&DUTOJ1210---逆序对构造排列

    来看这样一道问题:http://acm.dlut.edu.cn/problem.php?id=1210 题目大意:对于一个1-n的排列,a1,a2,a3,a4...an我们把满足i < j,ai ...

  7. 修改xcode代码风格设置

    1.找到文件:/Applications/Xcode.app/Contents/PlugIns/IDECodeSnippetLibrary.ideplugin/Contents/Resources/S ...

  8. c语言指针点滴1

    #include <stdio.h> #include <stdlib.h> void main() { int *p = NULL;//指针开始最好都初始化为空 if(p = ...

  9. linux shell在while中用read从键盘输入

    系统是ubuntu 14.04 64bit,之前曾想安装Stream来玩dota2,但最终没成功.由于Stream只有32bit,安装Stream时也安装了大量32bit的库.删除Stream后,这些 ...

  10. PHP的错误处理方式

    错误类型 PHP 主要有两种错误:触发错误和异常.其中触发错误大概可以分为:编译错误.引擎错误和运行时错误,其中前两个是无法捕获的:异常都是可以捕获的,当没有尝试捕获时则会中断代码. 触发错误可以通过 ...