asp.net結合aspnetpager使用SQL2005的存儲過程分頁
更新時間:2009年07月18日 11:21:11 作者:
項目中用到了,同事阿春寫了例子,并在實際項目中使用了,記錄下。感謝春哥的無私奉獻。
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, -- 返回記錄總數(shù), 非 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();
數(shù)據(jù)訪問層:
/// <summary>
/// 分頁獲取數(shù)據(jù)列表
/// </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");
}
復制代碼 代碼如下:
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, -- 返回記錄總數(shù), 非 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();
數(shù)據(jù)訪問層:
復制代碼 代碼如下:
/// <summary>
/// 分頁獲取數(shù)據(jù)列表
/// </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中讓Repeater和GridView支持DataPager分頁
- Asp.Net數(shù)據(jù)控件引用AspNetPager.dll分頁實現(xiàn)代碼
- 分享一個asp.net pager分頁控件
- asp.net分頁控件AspNetPager的樣式美化
- Asp.Net分頁和AspNetPager控件的使用
- asp.net下Repeater使用 AspNetPager分頁控件
- asp.net 通過aspnetpager為DataList分頁
- AspNetAjaxPager,Asp.Net通用無刷新Ajax分頁控件,支持多樣式多數(shù)據(jù)綁定
- asp.net 分頁sql語句(結合aspnetpager)
- asp.net mvc自定義pager封裝與優(yōu)化
相關文章
DataView.RowFilter的使用(包括in,like等SQL中的操作符)
這篇blog轉自C# examples,對DataView.RowFilter做了詳細介紹,能像SQL中使用in,like等操作符一樣進行過濾查詢,并附有實例,使用方便。2011-07-07.NET使用js制作百度搜索下拉提示效果(不是局部刷新)實現(xiàn)思路
搞了個不是局部刷新的百度搜索框下拉提示效果大致思路:前臺放一個input標簽,然后當該標簽內的值輸入有變化的時候,調用后臺代碼查詢 符合條件的數(shù)據(jù)綁定ListBox,感興趣的朋友可以了解下2013-01-01ASP.NET連接數(shù)據(jù)庫并獲取數(shù)據(jù)方法總結
這篇文章主要介紹了ASP.NET連接數(shù)據(jù)庫并獲取數(shù)據(jù)方法,結合實例分析總結了ASP.NET連接數(shù)據(jù)庫及獲取數(shù)據(jù)的相關實現(xiàn)技巧,并附帶了web.config配置文件的使用方法與相關注意事項,需要的朋友可以參考下2015-11-11asp.net core 集成swagger ui的原理解析
本文主要講解了如何對API進行分組,這里僅僅是舉了一個按照API功能進行分組的例子,其實在實際開發(fā)中,要按照何種方式分組,可以按照需求靈活定義,比如按照API版本進行分組2021-10-10.NET性能調優(yōu)之一:ANTS Performance Profiler的使用介紹
本系列文章主要會介紹一些.NET性能調優(yōu)的工具、Web性能優(yōu)化的規(guī)則(如YSlow)及方法等等內容。成文前最不希望看到的就是園子里不間斷的“哪個語言好,哪個語言性能高”的爭論,不多說,真正的明白人都應該知道這樣的爭論有沒有意義,希望我們能從實際性能優(yōu)化的角度去討論問題2013-01-01