asp.net结合aspnetpager使用SQL2005的存储过程分页

时间:2023-07-14 00:22:23 

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");
}
标签:asp.net,aspnetpager,存储过程,分页
0
投稿

猜你喜欢

  • PHP的mysqli_thread_id()函数讲解

    2023-06-13 10:09:43
  • 基于jsp实现新闻管理系统 附完整源码

    2023-07-10 15:35:53
  • 立足于传统行业设计

    2008-07-26 12:36:00
  • 能介绍一下NameSpace常用的地方吗?

    2009-11-01 18:11:00
  • 发一个较复杂的字符串截取函数

    2009-12-08 16:23:00
  • 详解CSS3中的属性选择符

    2008-04-24 14:30:00
  • ASPError(err)对象的相关基础知识

    2008-03-24 20:23:00
  • 如何做一个优秀的设计?

    2009-02-04 15:38:00
  • 极致之美——百行代码实现全新智能语言Lisp

    2010-07-13 13:07:00
  • 设计评论表单[译]

    2009-03-25 20:41:00
  • CSS在页面布局中实现div水平居中的方法总结

    2008-06-03 12:09:00
  • 由 IE8 User-Agent 更新想到的

    2009-01-12 18:33:00
  • 中英文双语导航菜单

    2007-05-11 17:04:00
  • python标准库之time模块的语法与简单使用

    2023-06-11 17:42:23
  • PL/SQL 类型格式转换

    2009-02-26 11:07:00
  • asp任何连接带密码的access数据库

    2008-04-29 21:36:00
  • asp sqlserver 执行存储过程返回记录集报对象关闭时不允许操作

    2011-03-11 10:57:00
  • 解读ASP.NET 5 & MVC6系列教程(9):日志框架

    2023-06-30 06:10:57
  • 关于搜索建议的两点小问题

    2011-09-16 20:15:29
  • ASP网站数据采集经验谈

    2008-03-09 15:30:00
  • asp之家 网络编程 m.aspxhome.com