首页 / 网页编程 / ASP.NET / asp.net结合aspnetpager使用SQL2005的存储过程分页
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)
数据访问层: 复制代码 代码如下: /// <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) };