急死我了,关于分页请教高手指点迷径
 我想实现动态分页,但是让它每页取得数量不一样! 
 晕,急死我了,都不知道该怎么表达了!   
 页面显示的数据有三种类型a,b,c. 
 页面是固定的高度,不让有滚动条!,问题出在这三种类型各占用的高度不同! 
 a类型页面显示8条记录占满页面,b类型页面显示16条才能占满页面,c类型是32条记录! 
 如果页面显示a类型数量不够,就从b类型里补,如果b类型不够就从c类型里补! 
 比如:如果到第三页a类型不够了,只有两条,这是时候需要从b类型里取出12条来填满页面!!依次类推!!!! 
 怎么计算呢!!!?????????? 
 怎么才能计算出来到哪一页   取第几条到第几条????????????????????? 
 这个公式计算出来结果需要两个值,一个是从第几条开始取,第二个就是取到哪一条 
------解决方案--------------------其实跟Web里面的DataGrid分页差不多的,更确切的说要比Web里面更简单一些,这就要看你对分页的原理了不了解了。   
 可以用微软提供的DataGrid控件来解决分页问题,不需要使用第三方控件。 
 楼主可以先到我的小论坛去熟悉一下分页的基本概念。(显示帖子页面,查看回复页面) 
 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,30   
 select 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 会随着你的数据增加而增大,所以我们提倡用第一种,也就是我上面讲的。