一个简单的分页控件+存储过程(源码)
2006-11-07 10:38
555 查看
前几天刚申请的自己Blog,所以这几天把自己以前的东西整理一下发布上来。
很久之前就已经写了这个控件,一直没有自己的空间所没有发布。其实这个分页控件也没什么特别主要的功能有:
可以采用存储过程分页也可以采用控件自己的DataTable分页。
运行的时候可以选择分页、不分页或分页的记录数。
可以任意选择跳转到相应的页数。
![](http://images.cnblogs.com/cnblogs_com/henryfan/PageControl.gif)
下载事例和源码
分页储存过程:
/*
函数名称: GetRecordFromPage
函数功能: 获取指定页的数据
参数说明:
@tblName 包含数据的表名
@PKName 关键字段名
@strGotFields 要获取的字段
@PageSize 每页记录数
@PageIndex 要获取的页码
@OrderType 排序类型, 0 - 升序, 1 - 降序
@strWhere 查询条件 (注意: 不要加 where)
@isCount 是否取得记录条数 , 0 - 不取 , 1 - 获取
@strSort 排序字段
*/
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), -- 表名
@PKName varchar(255), -- 字段名
@strGotFields varchar(1000) = '*' , --查询字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(2000) = '' , -- 查询条件 (注意: 不要加 where)
@isCount bit = 1, --取得记录条数
@strSort varchar(255) = '' --排序字段
AS
declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(1000) -- 临时变量
declare @strOrder varchar(500) -- 排序类型
declare @strCount varchar(1000)
declare @fldName varchar(255)
declare @sortName varchar(255)
declare @countSQL varchar(1000)
set @fldName = @PKName
if @strSort != ''
begin
set @sortName = @strSort
end
else
begin
set @sortName = @PKName
end
if @isCount = 1
begin
if @strWhere != ''
begin
set @countSQL = 'select count(' + @fldName + ') from ' + @tblName + ' where ' + @strWhere
end
else
begin
set @countSQL = 'select count(' + @fldName + ') from ' + @tblName
end
exec (@countSQL)
return
end
else
begin
if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by ' + @sortName + ' desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by ' + @sortName +' asc'
end
set @strSQL = 'select top ' + str(@PageSize) + @strGotFields + ' 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) + @strGotFields + ' from '
+ @tblName + ' where ' + @fldName + '' + @strTmp + '('
+ @fldName + ') from (select top ' + str((@PageIndex-1)*@PageSize) + ' '
+ @fldName + ' from ' + @tblName + ' where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
if @PageIndex = 1
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where (' + @strWhere + ')'
set @strSQL = 'select top ' + str(@PageSize) + @strGotFields + ' from '
+ @tblName + '' + @strTmp + ' ' + @strOrder
end
exec (@strSQL)
end
GO
很久之前就已经写了这个控件,一直没有自己的空间所没有发布。其实这个分页控件也没什么特别主要的功能有:
可以采用存储过程分页也可以采用控件自己的DataTable分页。
运行的时候可以选择分页、不分页或分页的记录数。
可以任意选择跳转到相应的页数。
![](http://images.cnblogs.com/cnblogs_com/henryfan/PageControl.gif)
下载事例和源码
分页储存过程:
/*
函数名称: GetRecordFromPage
函数功能: 获取指定页的数据
参数说明:
@tblName 包含数据的表名
@PKName 关键字段名
@strGotFields 要获取的字段
@PageSize 每页记录数
@PageIndex 要获取的页码
@OrderType 排序类型, 0 - 升序, 1 - 降序
@strWhere 查询条件 (注意: 不要加 where)
@isCount 是否取得记录条数 , 0 - 不取 , 1 - 获取
@strSort 排序字段
*/
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), -- 表名
@PKName varchar(255), -- 字段名
@strGotFields varchar(1000) = '*' , --查询字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(2000) = '' , -- 查询条件 (注意: 不要加 where)
@isCount bit = 1, --取得记录条数
@strSort varchar(255) = '' --排序字段
AS
declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(1000) -- 临时变量
declare @strOrder varchar(500) -- 排序类型
declare @strCount varchar(1000)
declare @fldName varchar(255)
declare @sortName varchar(255)
declare @countSQL varchar(1000)
set @fldName = @PKName
if @strSort != ''
begin
set @sortName = @strSort
end
else
begin
set @sortName = @PKName
end
if @isCount = 1
begin
if @strWhere != ''
begin
set @countSQL = 'select count(' + @fldName + ') from ' + @tblName + ' where ' + @strWhere
end
else
begin
set @countSQL = 'select count(' + @fldName + ') from ' + @tblName
end
exec (@countSQL)
return
end
else
begin
if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by ' + @sortName + ' desc'
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by ' + @sortName +' asc'
end
set @strSQL = 'select top ' + str(@PageSize) + @strGotFields + ' 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) + @strGotFields + ' from '
+ @tblName + ' where ' + @fldName + '' + @strTmp + '('
+ @fldName + ') from (select top ' + str((@PageIndex-1)*@PageSize) + ' '
+ @fldName + ' from ' + @tblName + ' where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
if @PageIndex = 1
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where (' + @strWhere + ')'
set @strSQL = 'select top ' + str(@PageSize) + @strGotFields + ' from '
+ @tblName + '' + @strTmp + ' ' + @strOrder
end
exec (@strSQL)
end
GO
相关文章推荐
- 一个简单的分页控件(源码)
- 一个简单的分页控件(源码)
- 一个简单实用的分页控件
- 发布一个wpf的分页控件.配合存储过程实现分页.
- 千万级数据分页之二---一个简单的自定义分页控件
- 一个Asp.Net的显示分页方法 附加实体转换和存储过程 带源码下载
- 一个简单的分页控件
- 一个相当独立的.通用分页控件c#源码二(downmoon收集)
- 提供一份简单的通用分页控件源码
- 我自己写的一个分页控件(源码和演示代码)PostBack分页版 for vs2003、SQL Server
- 分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?
- 一个相当独立的.通用分页控件c#源码一(downmoon收集)
- 我写的一个比较通用的分页控件,完整的设计时支持和比较流行的分页模式(提供源码下载)
- 一个简单的分页控件
- 分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?
- 一个简单的分页存储过程
- 一个相当独立的.通用分页控件c#源码二(downmoon收集)
- 一个相当独立的.通用分页控件c#源码三(downmoon收集)