asp.net结合aspnetpager使用SQL2005的存储过程分页
发布时间:2023-07-14 00:22:23
标签:asp.net,aspnetpager,存储过程,分页
SQL2005的存储过程:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[P_GetPagedReCord]
(@startIndex INT, -- 开始索引号
@endindex INT, -- 结束索引号
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 显示字段名
@OrderfldName varchar(255), -- 排序字段名
@IsReCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)
)
AS
declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(100) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @OrderType!=0
Begin
set @strOrder='Desc'
End
else
Begin
set @strOrder='Asc'
End
set @strSQL ='WITH orderList AS ( '+
'SELECT ROW_NUMBER() OVER (ORDER BY '+@OrderfldName+' '+@strOrder+')AS Row, '+@fldName+' '+
'from '+@tblName
if @strWhere!=''
set @strSQL = @strSQL+' where ' + @strWhere
set @strSQL=@strSQL+')'+
'SELECT '+@fldName+' '+
'FROM orderlist '+
'WHERE Row between '+str(@startIndex)+' and '+str(@endIndex)+''
if @IsReCount != 0
Begin
set @strSQL = ' select count(1) as Total from [' + @tblName + ']'
if @strWhere!=''
set @strSQL = @strSQL+' where ' + @strWhere
End
--print(@strSQL)
exec (@strSQL)
使用中的关键代码:
//翻页
protected void anpager_PageChanged(object sender, EventArgs e)
{
bind();
}
string strWhere = " 1 = 1 ";
ETHaiNan.BLL.ET_Video bll = new ETHaiNan.BLL.ET_Video();
this.anpager.RecordCount = int.Parse(bll.GetRecordCount(strWhere).Tables[0].Rows[0][0].ToString());
this.anpager.PageSize = 10;
this.anpager.AlwaysShow = true;
DataSet ds = bll.GetList(anpager.StartRecordIndex, anpager.EndRecordIndex,strWhere, 0);
this.rpt.DataSource = ds;
ds.Dispose();
数据访问层:
/// <summary>
/// 分页获取数据列表
/// </summary>
public DataSet GetList(int startIndex, int endindex, string strWhere, int IsReCount)
{
SqlParameter[] parameters = {
new SqlParameter("@startIndex", SqlDbType.Int),
new SqlParameter("@endindex", SqlDbType.Int),
new SqlParameter("@tblName", SqlDbType.VarChar, 255),
new SqlParameter("@fldName", SqlDbType.VarChar, 255),
new SqlParameter("@OrderfldName", SqlDbType.VarChar, 255),
new SqlParameter("@IsReCount", SqlDbType.Bit),
new SqlParameter("@OrderType", SqlDbType.Bit),
new SqlParameter("@strWhere", SqlDbType.VarChar,1000)
};
parameters[0].Value = startIndex;
parameters[1].Value = endindex;
parameters[2].Value = "ET_Video";
parameters[3].Value = "VideoID,Video_Name,Video_TypeID,Video_OrderCode,Video_Type,Video_AddDate";
parameters[4].Value = "VideoID";
parameters[5].Value = IsReCount;
parameters[6].Value = 1;
parameters[7].Value = strWhere;
return DbHelperSQL.RunProcedure("P_GetPagedReCord", parameters, "ds");
}
0
投稿
猜你喜欢
- 斐波那契记忆优化法:<script type="text/javascript">var fibonacci
- 如何用php实现APP消息推送现在有很多的消息推送厂商,比如阿里云的消息推送,极光推送,融云的消息推送。他们的原理都是把sdk内置在app里
- 两列布局的定宽自适应已经详解了,三列浮动中有两列定宽一列自适应的也详解了,那么该说说三列浮动中两列自适应一列定宽的布局了。中间定宽,左右两侧
- 用VBS语言实现的一个简单网页计算器,功能:可以进行加法、减法、乘法、除法、取反、开根号、及指数运算。虽然简单但是比起windows xp自
- z-blog摘要图文混排,在月光的博客早已有介绍,但是他的图文混排是基于一篇文章只定义一个Tag的情况,对于我这样习惯多tag的博客,再更改
- 一、判断类型的函数is_bool() //判断是否为布尔型is_float() //判断是否为浮点型
- 上次 li 把 dl 模拟了~dl不知道要干什么了:green:~找了ol一起来做复合列表~:这个练习除了css外~外加用了点JS :shi
- 原文地址:30 Days of Mootools 1.2 Tutorials - Day 11 - Using Fx.Morph, Fx O
- SQL Server数据库动态交叉表的参考示例:--建立测试环境set nocount oncreate table test(model
- 1 , javascript字符集:javascript采用的是Unicode字符集编码。为什么要采用这个编码呢?原因很简单,16位的Uni
- 要求:用户名:必须是6-10位字母、数字、下划线(这里字母、数字、下划线是指任意组合,没有必须三类均包含)不能以数字开头密码:必须是6-20
- 107条javascript(js)常用的方法技巧,十分的实用,相信看了下面的这些js编程技巧和方法,能够给javascript初学者解决很
- 关于asp缓存函数,类什么的,在网上可以说笔笔皆是,为啥我要不辞辛苦去写一个呢?大概看了下,各有各的优点吧,可是大部分好像不可以缓存数据额,
- mysql_result定义和用法mysql_result() 函数返回结果集中一个字段的值。mysql_result() 返回 MySQL
- 通过界面设计上是能手工操作的,无法达到我批量修改几千台服务器。 因为此了一个脚本来批量执行。 环境:redgate + mssql 2008
- var fso = new ActiveXObject("Scripting.
- 如果您是HTML的初学者,请您先自学HTML。因为DHTML是现有的HTML技术的一个综合,所以HTML语言对学习动态HTML是
- 查询效率分析:子查询为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询。在这种情况下可以考虑用联接查询来取代。如果要用子查询,那就用E
- 技巧之一:提高使用Request集合的效率 访问一个ASP集合来提取一个值是费时的、占用计算资源的过程。因为这个操作包含了一系列对相关集合的
- 作为一位不懂代码的业余网页制 * 好者,常常羡慕专业程序人员在浏览器中编制出的效果超酷的一些多媒体作品。唉,无奈程序那东东,酶涩南学,非一日之