论坛首页 Java企业应用论坛

分页原理

浏览 7626 次
锁定老帖子 主题:分页原理
精华帖 (0) :: 良好帖 (0) :: 新手帖 (13) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-04-18  
写一个通用的分页吧。 基于后台的通用分页sql,可以利用反射自动装载数据到对象中。
前台显示做一个封装。

或者用组件去实现,如dhemlxgrid。
这个原理应该不会没人不明白吧。
0 请登录后投票
   发表时间:2011-04-18  
wkcgy 写道
我觉得第二个intPageCount=intRowCount%intPageSize==0?(intRowCount)/intPageSize:(intRowCount/intPageSize+1);更好理解!!


我也是用的这个。好理解。不
0 请登录后投票
   发表时间:2011-04-19  
我去。。。。
0 请登录后投票
   发表时间:2011-04-19  
su1216 写道
小学在学除法的时候,就有带余除法,余数=0即是整除
整除在分解质因数之前

不出意外,应该是小学3、4年纪的课程

0 请登录后投票
   发表时间:2011-04-19  
这与原理有啥关系?
0 请登录后投票
   发表时间:2011-04-19  
没有其他意思。但是真的有人问我。而不只是几个!所以我就直接丢出来。呵呵。。不过已近做好新手贴的准备了。如果能帮到一个人。新手贴也无所谓。
0 请登录后投票
   发表时间:2011-04-19  
kaneg 写道
楼主的解释是很清楚的,但楼主知道如何用数学方法推导或证明intPageCount = (intRowCount+intPageSize-1) / intPageSize;这个公式吗?
因为这个里面涉及到整除和求余的操作,所以我觉得不是用小学数学就能解决的那么简单。
Tank03 写道

      相信大家对分页已经很熟了,就不累赘有哪些方法了.但是大家知道intPageCount = (intRowCount+intPageSize-1)/intPageSize 这个算法,但是它的原理你知道么?当然你是老鸟,呵呵~~不要丢砖,飞过就OK啦~.

 

其实
    intPageCount = (intRowCount+intPageSize-1) / intPageSize;
你可以把它分开看成:
    intPageCount=(intRowCount-1/intPageSiez)+1;
也就是说:
    我们假设introwCount = 8;//(总的记录),intPageSize = 8;//每页记录.
      所以总共就为1页,如果rowCount = 14,inPageSize=8则为2页,就是说总页数至少是要比8的倍数多1才会多翻一页.如果一页显示八个记录,而总数刚好最后页有8个记录,你会翻页吗,不会的吧!!就这个道理
如果你觉得还是不理解,你就用下面这个:
    intPageCount=intRowCount%intPageSize==0?(intRowCount)/intPageSize:(intRowCount/intPageSize+1);
      简单的解释:如果rowCount = 8;//总记录数 
      intPageSize = 8;//每页记录数,那么总页数就是因为8%8==0则8/8=1
就是一页
如果rowCount=14 intPageSize=8则总页数就是因为14%8!=0则14/8+1=2


 

 

 


假设:intRowCount = p*intPageSize+q(q为余数,p为整数)
因为q为余数,所以0<=q<intPageSize
代入到(intRowCount + intPageSize - 1) / intPageSize,则得到
intPageCount = (p*intPageSize+q+intPageSize - 1) / intPageSize=p+1+(q-1)/intPageSize
当intPageSize能整除intPageSize时,q=0,p+1+(q-1)/intPageSize取整的结果为p
当不能整除的时候,1<=q<intPageSize=>0<=q-1<intPageSize-1
所以:0<=(q-1)/intPageSize<1
取整的结果为p+1
综上所述,整除时intPageCount = p
不能整除是为p+1

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics