这个很多的.如果数据量比较大.用存储过程
解决方案 »
- ajax和div的问题
- 自己写ASP.NET的类,如何调用?不会写代码,想在页面文件中调用
- 用C#操作Word中的内容,我在本机中开发的(win2000+sql server2000),没有问题 ,部署到服务器(win20003)出错
- 为什么一点确定tabel位置就跳呢???、
- 如何做象QQGame那样的登录界面?
- 关于Application.lock()的等待问题
- 高分求数据库操作类(查询、更新、事务等),共同提高。分不够可载开贴!
- 在线等待:请教double格式化问题
- 这两个控件有什么区别?
- 请问怎样在DataGrid所列出的数据中实现某些格不同颜色? 200分
- 呼唤CSDN高手,如何将这个一行两列改为一行三列?
- gridview无刷新分页问题
楼主可以先到我的小论坛去熟悉一下分页的基本概念。(显示帖子页面,查看回复页面)
www.xproer.com/bbs
然后我再跟你讲解一下目前最简单的一种分页方法。通常我们为了考虑分页SQL语句的性能,最好使用四个按钮来实现分页。
首页,上一页,下一页,尾页
这四个按钮事件内部分页用四条SQL语句来实现从数据库中读取相应的数据。通常我们的数据表中有ID列,这个基本上是用来分页的。如果我们的数据显示形式是从最新的到最旧的显示方式:
ID显示:
100
99
98
97
96
95
94
93
92
91
90
89
88
87
86
85
84
83毫无疑问,首页是前10条(假设一页显示10条数据)是从100开始到91,这个SQL最简单:select top 10 from Table1 order by ID DESC (这个这是首页的SQL语句)那么下一页就是ID要比91小的前10条数据,select top 10 from Table1 where ID<@ID order by ID DESC (这是下一页SQL语句)尾页SQL语句也是超简单select top 10 from Table1 order by ID ASC (这个是尾页)上一页SQL语句select top 10 from Table1 where ID>@ID order by ID DESC (上一页SQL语句)好了,基本分页SQL语句搞定了,那么重要的就是如何取到这些ID值,我们可以将数据读取前台,通过JS获取这些相应的ID值,然后传给服务端控件,这样我们就可以轻松的实现分页了。
基本上这算得上是最简单的分页了同时也是效率最高的,因为还有一些SQL语句,比如
select top @PageSize * from (select top @DataCount * from AdminTB order by ID ASC)a order by ID DESC;");原理:
假设有30条数据:
1,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现在我们要取中间的10条数据,则SQL语句要这样写
select top 10 * from (select top 20 * from AdminTB order by ID ASC) order by ID DESC;");
实际上的效果如下
(1,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,30select top 20 * from AdminTB order by ID ASC是取得 () 部分数据
select top 10 * from (select top 20 * from AdminTB order by ID ASC) order by DESC;取得是 [] 部分。这下明白了吧不过遗憾的是这种分页是效率最低的,因为 @DataCount 会随着你的数据增加而增大,所以我们提倡用第一种,也就是我上面讲的。