天修改原来代码中的DataGrid分页部分,顺便重新修搞了个存储过程(学习了csdn上的例子!)
1
/*
2
一个将数据分页的存储过程
3
*/
4
CREATE PROCEDURE Proc_Pagination
5
@tb varchar(50), --表名
6
@col varchar(50), --按该列来进行分页
7
@coltype int, -- @col 列的类型,0-数字类型,1-字符类型,2-日期时间类型
8
@orderby int, --排序,0-顺序,1-倒序
9
@collist varchar(800), --要查询出的字段列表,*表示全部字段
10
@pagesize int=10, --每页记录数
11
@page int=1, --指定页
12
@condition varchar(800) --查询条件
13
AS
14
15
DECLARE @sql nvarchar(4000)
16
DECLARE @where1 varchar(800)
17
DECLARE @where2 varchar(800)
18
IF @condition is null or rtrim(@condition)=\'\'
19
BEGIN --没有查询条件
20
SET @where1=\' WHERE \'
21
SET @where2=\' \'
22
END
23
ELSE
24
BEGIN --有查询条件
25
SET @where1=\' WHERE (\'+@condition+\') AND \' --本来有条件再加上此条件
26
SET @where2=\' WHERE (\'+@condition+\') \' --原本没有条件而加上此条件
27
END
28
29
IF @orderby=0 --排列顺序 0 顺序 1 倒序
30
SET @sql=\'SELECT TOP \'+CAST(@pagesize AS varchar)+\' \'+@collist+
31
\' FROM \'+@tb+@where1+@col+\'>(SELECT MAX(\'+@col+\') \'+
32
\' FROM (SELECT TOP \'+CAST(@pagesize*(@page-1) AS varchar)+\' \'+
33
@col+\' FROM \'+@tb+@where2+\'ORDER BY \'+@col+\') t) ORDER BY \'+@col
34
ELSE
35
SET @sql=\'SELECT TOP \'+CAST(@pagesize AS varchar)+\' \'+@collist+
36
\' FROM \'+@tb+@where1+@col+\'<(SELECT MIN(\'+@col+\') \'+
37
\' FROM (SELECT TOP \'+CAST(@pagesize*(@page-1) AS varchar)+\' \'+
38
@col+\' FROM \'+@tb+@where2+\'ORDER BY \'+@col+\' DESC) t) ORDER BY \'+
39
@col+\' DESC\'
40
IF @page=1--第一页
41
SET @sql=\'SELECT TOP \'+CAST(@pagesize AS varchar)+\' \'+@collist+\' FROM \'+@tb+
42
@where2+\'ORDER BY \'+@col+CASE @orderby WHEN 0 THEN \'\' ELSE \' DESC\' END
43
EXEC(@sql)
44
GO
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44