分页条中显示数字页码的计算方法
2015-03-06 17:03
381 查看
摘要:在做web分页的时候,分页条中数字显示个数的计算方法。没有用现成的分页组建来做分页条。自己写了段简单的计算分页的代码。 2014-8-8 15:56:46 fix one bug. detailDesc: 使用 calcPage(4, 5, 4);将会导致分页异常。
页码多的时候,当前页始终保持是分页条中显示的最中间那页。
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= i; j++) {
calcPage(j, i, 2);
System.out.println();
}
System.out.println("***********************"+i);
}
}
/**
* 计算显示当前分页的起始页
* @param pageNum 当前页码
* @param pageCount 总页数
* @param sideNum 分页系数 分页条中显示几个数字页码。
* 显示数字页码个数 = 2 * sideNum + 1
*/
public static void calcPage(int pageNum,int pageCount,int sideNum){
int startNum = 0;
int endNum = 0;
if(pageCount<=sideNum){
endNum = pageCount;
}else{
if((sideNum+pageNum)>=pageCount){
endNum = pageCount;
}else{
endNum = sideNum+pageNum;
if((sideNum+pageNum)<=(2*sideNum+1)){
if((2*sideNum+1)>=pageCount){
endNum = pageCount;
}else{
endNum = 2*sideNum+1;
}
}else{
endNum = sideNum + pageNum;
}
}
}
if(pageNum<=sideNum){
startNum = 1;
}else{
if((pageNum+sideNum)>=pageCount){
if((2*sideNum+1)>=pageCount){
if((pageCount - 2*sideNum)>=1){
startNum = pageCount - 2*sideNum;
}else{
startNum = 1;
}
}else{
startNum = pageCount - 2*sideNum;
}
}else{
if((pageNum-sideNum)>=1){
startNum = pageNum - sideNum;
}else{
startNum = 1;
}
}
}
loopOut(startNum, endNum, pageNum);
}
/**
* 输出计算出来的当前分页详情
* @param startNum
* @param endNum
* @param pageNum
*/
public static void loopOut(int startNum,int endNum,int pageNum){
for (int i = startNum; i <= endNum; i++) {
if(i==pageNum){
//输出@符号,代表当前页
System.out.print(i+"@ | ");
}else{
System.out.print(i+" | ");
}
}
}
页码多的时候,当前页始终保持是分页条中显示的最中间那页。
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= i; j++) {
calcPage(j, i, 2);
System.out.println();
}
System.out.println("***********************"+i);
}
}
/**
* 计算显示当前分页的起始页
* @param pageNum 当前页码
* @param pageCount 总页数
* @param sideNum 分页系数 分页条中显示几个数字页码。
* 显示数字页码个数 = 2 * sideNum + 1
*/
public static void calcPage(int pageNum,int pageCount,int sideNum){
int startNum = 0;
int endNum = 0;
if(pageCount<=sideNum){
endNum = pageCount;
}else{
if((sideNum+pageNum)>=pageCount){
endNum = pageCount;
}else{
endNum = sideNum+pageNum;
if((sideNum+pageNum)<=(2*sideNum+1)){
if((2*sideNum+1)>=pageCount){
endNum = pageCount;
}else{
endNum = 2*sideNum+1;
}
}else{
endNum = sideNum + pageNum;
}
}
}
if(pageNum<=sideNum){
startNum = 1;
}else{
if((pageNum+sideNum)>=pageCount){
if((2*sideNum+1)>=pageCount){
if((pageCount - 2*sideNum)>=1){
startNum = pageCount - 2*sideNum;
}else{
startNum = 1;
}
}else{
startNum = pageCount - 2*sideNum;
}
}else{
if((pageNum-sideNum)>=1){
startNum = pageNum - sideNum;
}else{
startNum = 1;
}
}
}
loopOut(startNum, endNum, pageNum);
}
/**
* 输出计算出来的当前分页详情
* @param startNum
* @param endNum
* @param pageNum
*/
public static void loopOut(int startNum,int endNum,int pageNum){
for (int i = startNum; i <= endNum; i++) {
if(i==pageNum){
//输出@符号,代表当前页
System.out.print(i+"@ | ");
}else{
System.out.print(i+" | ");
}
}
}
相关文章推荐
- 分页条中显示数字页码的计算方法
- 计算出书的全部页码中分别用到多少次数字的方法
- 分页控件中的数字按钮计算方法
- js分页页码显示逻辑实现的两种方法
- 分页页码显示计算
- 分页显示时传递页码的方法
- GridView 始终显示 Pager 分页行的一种方法
- C#一个显示分页页码类
- dedecms中显示数字验证码的修改方法
- dedecms中显示数字验证码的修改方法
- 记录集分页显示策略五种实现方法
- asp下计算分页的几种方法
- ASP带数字的最好分页方法
- C#一个显示分页页码类
- 记录集分页显示策略五种实现方法
- 记录集分页显示策略五种实现方法
- .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
- 搜索引擎翻页导航条页码计算方法
- Communtiy Server论坛的帖子显示页面分页部分的Url Rewrite的构造方法
- C#一个显示分页页码类