从学校出来一开始就用SQL2005,现在的客户有的是SQL2000有时候很多的东西都用不成,没有办法,就像今天这儿事,存储过程出错,郁闷。关于分页存储过程的资料很多,我就不多说了,Google一下你就知道了。也发一个存储过程,方便大家。性能还算可以吧,支持多表查询,多字段排序,但是必须主键唯一,要是哪位兄弟有支持主键重复的,请告之。
思路说明:
按条件排序方式查询表获得总数,计算你想要的页码开始位置和结束位置,取得你要的信息返回。为了提高一点性能,增加了传入总数参数,存储过程中判断当页码Page_Index=1的时候,获得总数,不为1的时候直接的使用传入的总数参数。
准备工作:
1.下载PagerHelperSQL2000.cs、PagerQueryParam.cs、SMSPagination.sql、AspNetPager
地址:AspNetPager SMSPagination.sql
注意:PagerQueryParam是我写的一个分页查询类,包含了分页存储过程要用的信息,全部的分页查询都可以调用这个类;
2.在使用的地方加入PagerHelperSQL2000.cs和PagerQueryParam.cs
3.应用代码
分页前台代码
1 static PagerQueryParam Pager = new PagerQueryParam();
2 Pager.TableName = @"dbo.CargoTrain A inner join dbo.CargoVideos C on A.TrainSystemCode=C.TrainSystemCode";
3 Pager.PrimaryKey = @"C.VideoSystemCode";
4 Pager.ShowFields = @" A.[StationName]”;
5 Pager.OrderField = @"C.VideoSystemCode";
6 Pager.OrderType = 1;
7 Pager.StrWhere = string.Empty;
8 Pager.PageIndex = 1;
9 Pager.PageSize = 10;
10 Pager.TotalCount = 0;
11 Pager.ReTotalCount = 0;
12 int TotalCount = Pager.TotalCount;
13 string ErrMsg = string.Empty;
14 PagerHelperSQL2000 datahel = new PagerHelperSQL2000();
15
16 Pager.StrWhere = GetStrWhere();
17 DataTable dt = datahel.GetDataListBuPagerQueryParam(Pager, out TotalCount, out ErrMsg);
18 if (TotalCount > 0)
19 {
20 Rep.DataSource = dt;
21 Pager.TotalCount = TotalCount;
22 AspNetPager.RecordCount = Pager.TotalCount;
23 AspNetPager.PageSize = Pager.PageSize;
24 Rep.DataBind();
25 }