使用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. Jmeter BeanShell 引用变量报错jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Parse error at line 14, column 181 : Error or number too big for integer

    如果你通过CSV Data Set Config或者_StringFromFile函数来参数化你的请求,需要特别注意当参数为纯数字时,jmeter会默认将其识别成int型数据,说明jmeter并不是默 ...

  2. ios中的coredata

    本文转载至 http://blog.csdn.net/chen505358119/article/details/9334831 分类: ios2013-07-15 18:12 12449人阅读 评论 ...

  3. 【BZOJ2320】最多重复子串 调和级数+hash

    [BZOJ2320]最多重复子串 Description 一个字符串P的重复数定义为最大的整数R,使得P可以分为R段连续且相同的子串.比方说,“ababab”的重复数为3,“ababa”的重复数为1. ...

  4. [转] android获取手机信息大全

    原文链接:http://blog.csdn.net/hytfly/article/details/8552483 IMEI号,IESI号,手机型号: private void getInfo() { ...

  5. flex 均分铺满

    <view>充值金额</view> <view class="weui-flex"> <repeat for="{{amount ...

  6. JFrame上添加、删除Jpanel后动态显示界面问题

    JFrame中动态添加或者删除JPanel后总是不正确显示需要的界面问题: 1.删除panel后还是显示之前的界面,新删除的panel在界面上并没有被删除: 2.删除panel1后添加新的panel2 ...

  7. Connection cannot be null when 'hibernate.dialect' not set

    严重: Exception sending context initialized event to listener instance of class [org.springframework.w ...

  8. PowerPC架构与X86架构

    PowerPC架构 PowerPC是一种精简指令集(RISC)架构的中央处理器(CPU),其基本的设计源自IBM(国际商用机器公司)的POWER(Performance Optimized With ...

  9. nginx反向代理三台web

    1.首先我们需要在服务器中三个不同名字,并将他们赋值 2.切换到nginx—conf  把三台机器的nginx的配置文件分别命名为web1.conf.web2.conf.web3.conf vim的赋 ...

  10. RedHat安装yum+配置国内yum源

      新安装了redhat6.5安装后,登录系统,使用yum update 更新系统.提示: This system is not registered to Red Hat Subscription ...