使用jpivot过程中,如果查询到的结果行数超过一个阈值,后面的显示就会丢失,这时需要分页显示。

假设应用中组装的MDX语句已经含有NON EMPTY,把空行直接过滤掉了。

这时需要修改的jpivot源码文件包括:

1、TableComponent.java

其中方法buildRows2Dim(Element)

在方法的最后的else块中,代码如下:

...
cellElem.setAttribute("value", v);
cellElem.setAttribute("colspan", Integer.toString(nosColumns));
row.appendChild(cellElem);
} else {
ResultCache resultCache = ResultCache.getInstance();
int currentPage = 1; //当前页数
int pageRows = 100; //每页多少行,默认100行
if(resultCache.getResult("currentPage") != null) {
currentPage = (Integer)resultCache.getResult("currentPage");
}
if(resultCache.getResult("pageRows ") != null) {
pageRows = (Integer)resultCache.getResult("pageRows ");
}
if(pageRows % 2 != 0) { //保证每页行数是偶数
pageRows += 1;
}
int i = 0; //每页起始位置
int end = 0; //每页结束位置
if(nosRows > pageRows ) {
i = (currentPage - 1) * pageRows ;
if(nosRows - i > pageRows) {
end = i + 100;
} else if(nosRows - i <= 0) {
i = 0;
end = i + 100;
} else {
end = nosRows;
}
} else {
end = nosRows;
}
for(; i < end; i++) {
boolean even = (i % 2 == 0);
Element row = append("row", parent);
rowAxisBuilder.buildRow(row, i);
buildCells(row, even);
}
}

其中使用到echache缓存了 当前页数 和 每页多少行  的值,从而进行计算需要显示结果,有关echache的使用参见http://www.cnblogs.com/hongxf1990/p/4534243.html

2、SpanCalc.java

其中方法makePosSpan(Span span, int hierSpans)

添加代码:

if(forcePositionBreak[pi][hi])
break loop; ResultCache resultCahe = ResultCache.getInstance();
int pageRows = 100; //每页显示的行数
if(resultCahe.getResult("pageRows ") != null) {
pageRows = resultCahe.getResult("pageRows");
}
if(pageRows % 2 == 0) { //保证每行显示的是偶数
pageRows += 1;
}
if(pi % pageRows == 0) {
break loop;
}

这里强制按照每页显示的行数进行分行

修改这两个java文件即可,这里其实就是把原本全部的行数按照需要分段显示在页面上

修改jpivot源码实现分页的更多相关文章

  1. 修改FFMpeg源码—捕获丢包

    概述 最近我们项目有一个需求就是解决客户端播放RTSP视频流花屏的问题,一般来说丢包就会引起花屏,导致客户端花屏的因素又有很多,比如说: 相机到服务器丢包 服务器到客户端丢包 等等... 其中服务器到 ...

  2. 修改spring源码重写classloader实现项目加密

      (一)操作方法和spring源码添加修改部分 事先说明:spring源码要下载好,会有修改spring的源码操作,本文和本作者所依赖的spring项目的版本是3.1.1,spring4及以上源码对 ...

  3. 修改VCL源码实现自定义输入对话框

    来自:https://yq.aliyun.com/wenji/88428 通过修改VCL源码实现自定义输入对话框 在BCB中有两个函数可以实现输入对话框:InputBox和InputQuery,其实I ...

  4. paramiko修改本分源码

    一.获取paramiko源码 环境:Python3 下载地址:https://github.com/paramiko/paramiko 使用的是 demos这个文件夹 二.修改部分源码用以登入 2.1 ...

  5. 修改CAS源码是的基于DB的认证方式配置更灵活

    最近在做CAS配置的时候,遇到了数据源不提供密码等数据的情况下,怎样实现密码输入认证呢? 第一步:新建Java项目,根据假面算法生成CAS加密工具 出于保密需要不提供自定义的加密工具,在您的实际项目中 ...

  6. 修改springfox-swagger源码,使example中时间格式默认为“yyyy-MM-dd HH:mm:ss”

    修改swagger源码,使example中时间格式默认为"yyyy-MM-dd HH:mm:ss" 前言 简单点说,在swagger中,怎么能针对以下vo中的java.util.D ...

  7. 修改json源码支持datetime序列化

    修改json源码支持datetime序列化 import json import datetime now = datetime.datetime.today() json.dumps(now) 抛出 ...

  8. THINKPHP_(8)_修改TP源码,支持基于多层关联的任一字段进行排序

    之前博文 前述博文THINKPHP_(1)_修改TP源码,支持对中文字符串按拼音进行排序,其解决的主要问题是,对于查询出的think\collection数据,按指定字段对数据进行排序,从而在页面上进 ...

  9. 修改unittest源码之tearDown

    需求 最近在写selenium自动化平台,想把每条用例后面都带上截图,最开始是每条用例加上封装好的截图函数,但是发现太麻烦,就决定加在tearDown函数里面,每条用例结束后执行截图操作. 那么问题来 ...

随机推荐

  1. 测试kernel.pid_max值

    # sysctl kernel.pid_max kernel.pid_max = # sysctl - kernel.pid_max = #include <unistd.h> #incl ...

  2. 【BZOJ1823】[JSOI2010]满汉全席 2-SAT

    [BZOJ1823][JSOI2010]满汉全席 Description 满汉全席是中国最丰盛的宴客菜肴,有许多种不同的材料透过满族或是汉族的料理方式,呈现在數量繁多的菜色之中.由于菜色众多而繁杂,只 ...

  3. CSS 关于让页面的高度达到电脑屏幕的底部

    .sidebar:before {content: "";display: block;width: 190px;position: fixed;bottom: 0;top: 0; ...

  4. 巨蟒python全栈开发linux之centos5

    1.nginx安装使用 2.nginx访问日志和压测命令 3.nginx反向代理配置 nginx的404页面 访问:淘宝官网的一个错误地址:http://taobao.com/eeeeeeee 淘宝的 ...

  5. php7/etc/php-fpm.d 配置

    php7/etc/php-fpm.d/www.conf nginx php-fpm 高并发优化 - 日记本的回忆 - 博客园 https://www.cnblogs.com/cocoliu/p/856 ...

  6. stochastic matrix

    w Stochastic matrix - Wikipedia  https://en.wikipedia.org/wiki/Stochastic_matrix Suppose you have a ...

  7. .net 取得类的属性、方法、成员及通过属性名取得属性值

    //自定义的类 model m = new model();   //取得类的Type实例 //Type t = typeof(model);    //取得m的Type实例 Type t = m.G ...

  8. SAP后勤模块实施攻略——1.ERP和SAP

    近日接到任务,看完乐立骏老师的SAP后勤模块实施攻略这本书,现在把第一章内容简单整理.第一章讲的是关于ERP和SAP的介绍. 1.ERP E:Enterprise / 企业 R:Resource / ...

  9. LVM逻辑卷管理器

    LVM概述 通过使用Linux的逻辑卷管理器(Logical Volume Manager, LVM),用户可以在系统运行时动态调整文件系统的大小,把数据从一块硬盘重定位到另一块硬盘,也可以提高I/O ...

  10. 由于Redis漏洞导致服务器被黑

    原文地址 漏洞描述 Redis默认情况下,会绑定在0.0.0.0:6379,这样将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Re ...