sql server高效分页控件及c#调用实例
第一、首先在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#调用实例的更多相关文章
- mysql 高效分页控件及c#调用实例
第一.首先在mysql中创建一个存储过程 BEGIN /* @selectSql VARCHAR(5000), --sql语句 @orderWhere VARCHAR(200), --排序条件 @pa ...
- 纯手写分页控件CSS+JS+SQL
Asp.net中虽然用DataPager配合ListView可以实现分页显示,但是有时候由于开发环境等问题不能用到DataPager控件,那么自己手工写一个分页控件就很有必要了,当然,最重要的是通用性 ...
- C# DataGridView自定义分页控件
好些日子不仔细写C#代码了,现在主要是Java项目,C#.Net相关项目不多了,有点手生了,以下代码不足之处望各位提出建议和批评. 近日闲来无事想研究一下自定义控件,虽然之前也看过,那也仅限于皮毛,粗 ...
- 【转】AspNetPager分页控件用法
AspNetPager分页控件解决了分页中的很多问题,直接采用该控件进行分页处理,会将繁琐的分页工作变得简单化,下面是我如何使用AspNetPager控件进行分页处理的详细代码: 1.首先到www.w ...
- Atitit.列表页面and条件查询的实现最佳实践(2)------翻页 分页 控件的实现java .net php
)------翻页 分页 控件的实现java .net php 1. 关于翻页有关的几大控件::搜索框控件,显示表格控件,翻页器,数据源控件.. 1 2. 翻页的显示格式:: 1 2.1. 通常ui- ...
- 分页控件AspNetPager学习笔记
1.AspNetPager简介 AspNetPager是一款开源.简单易用.可定制化等等各种优点的Web分页控件. 2.使用方法 1)下载AspNetPager.dll文件(http://www.we ...
- C# devexpress gridcontrol 分页 控件制作
这个小小的功能实现起来还是有一点点复杂, 分页单独一个usercontrol 出来,导致查询换页 与gridcontrol页面分离, 一般通过换页事件通知girdcontrol 做出查询 查询来说有 ...
- Web用户控件开发--分页控件
分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一些可以分页的数据控件,但其分页功能并不尽如人意.本文对于这些数据控件的假分页暂且不表,如有不明白的同学请百Google度之. ...
- AspNetPager.dll 分页控件使用
今天在用.net 做网站的时候,用到了DATALIST,但是datalist 没有自带的分页控件,后来在网上找了好长时间,看了aspnetpager.dll这个控件,这个控件挺好用的.我把使用方法写出 ...
随机推荐
- 部署在腾讯云的公益网站遭受了一次CC攻击
版权声明:本文由黄希彤 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/651089001483090830 来源:腾云阁 ...
- IOS内存nil与release的区别
IOS内存nil与release的区别 分类: IOS内存管理 nil和release的作用: nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系:而release才是真正通知 ...
- (转)Linux监控工具
需要监控Linux服务器系统性能吗?尝试下面这些系统内置或附件的工具吧. 大多数Linux发行版本都装备了大量的监控工具,这些工具提供了能用作取得相关信息和系统活动的量度指标. 你能使用这些工具发现造 ...
- POJ 3525 Most Distant Point from the Sea
http://poj.org/problem?id=3525 给出一个凸包,要求凸包内距离所有边的长度的最小值最大的是哪个 思路:二分答案,然后把凸包上的边移动这个距离,做半平面交看是否有解. #in ...
- FJ省队集训最终测试 T3
思路:状态压缩dp,f[i][j[[k]代表i行j列这个格子,连续的状态为k,这个连续的状态是什么?就是下图 X格子代表我当前走到的地方,而这里的状态就是红色部分,也就是连续的一段n的状态,我们是分每 ...
- PSAM 卡的应用操作方法
PSAM 卡的应用 PSAM 功能 终端安全存储模块 PASM 常用于 脱机交易的 安全认证 脱机交易的流程 1.卡片对持卡人的认证(防止 ...
- Borland license information was found,but it is not valid for delphi.
The start Delphi7 come amiss: Borland license information was found,but it is not valid for delphi. ...
- auto space advisor
<pre name="code" class="sql">首先:oracle有自动Job,进行shrink space SQL> select ...
- Ajax--xml格式及注意事项
<?xml version='1.0' ?>//整个标签必须顶格写,version='1.0'是xml的版本号 <Info>//只能有且只有一个根作为最外层标签 <n1& ...
- [iOS] 创建第一个应用程序项目
开发环境:MacBook Pro XCode 5.0.1 1. 创建新的空的工程 2. 手动添加Controller 3. 将Controller添加到AppDelegate 4. 编辑.xib 5. ...