使用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. 1.SpringMvc--初识springmvc

    引自@精品唯居 springMvc是什么 springmvc是表现层的框架,是一个spring的表现层组件.是整个spring框架的一部分,但是也可以不使用springmvc.跟struts2框架功能 ...

  2. LUA速成教程

    說明: 1.該教程適合對編程有一定了解的人員. 2.該教程在WINDOWS下實驗. 切入正題, 1.首先下載Notepad++,工欲善其事,必先利其器,然後安裝NotePad++的插件NppExec. ...

  3. IIS配置(持续更新中...)

    本文暂时适用于IIS7.5. IIS配置文件路径:"C:\Windows\System32\inetsrv\config\applicationHost.config" 1.sta ...

  4. eclipse远程debug Java程序

    使用Eclipse JPDA远程调试Java程序 本文将介绍使用Eclipse JPDA,在Eclipse的开发环境下对远程运行的Java程序进行调试操作. 请按以下步骤进行(本人已经在Eclipse ...

  5. WCF基础之事务

    说到事务,我最先想到的是“回滚”. 百科:事务是恢复和并发控制的基本单位.事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性.好了,具体的就不多复制了. 我小试了一下 ...

  6. django-websocket 安装及配置

    1.安装 dwebsocket (venv) C:\code_object\websocketTest>pip install dwebsocket -i https://pypi.douban ...

  7. 任务05—学习 MARKDOWN 语言

    我的简历地址: https://github.com/jinxiaohang/MyResume/blob/master/ForJavaJob.md 本任务主要目的掌握markdown. 1.首先是工具 ...

  8. ubuntu下MySQL无法启动Couldn't find MySQL server (/usr/bin/mysqld_safe)”

    一台虚拟测试机,启动的时候,报上述错误,从这个报错来看,多半是因为读取到了另外的my.cnf导致的 那么,my.cnf放置在什么地方? 可以通过如下指令获取到 root@mysql:~# mysqld ...

  9. 关于python代码是编译执行还是解释执行

    Python 是编译型语言还是解释型语言?回答这个问题前,应该先弄清楚什么是编译型语言,什么是解释型语言. 所谓编译执行就是源代码经过编译器编译处理,生成目标机器码,就是机器能直接运行的二进制代码,下 ...

  10. jQuery 查找标签

    1 基本选择器 2 基本筛选器 3 属性选择器 4 间接选择 1 基本选择器 //id选择器: $("#id") //标签选择器: $("tagName") / ...