我对如何在细节范围内显示边框有疑问,我想得到一些帮助。
比如说,详细信息带中的一列可能有很多LOTS数据,我的意思是有时一条记录实际上可能需要2~3页才能显示。
现在客户要求我们应该让报告始终显示边框的底线,只要它符合页面末尾(即使此记录尚未结束)
我尝试了什么:
制作一个高度为1px的列页脚。
将“浮动列页脚”设置为TRUE
结果:它工作得很好,但如果列页脚后面有一个摘要带,则此行将在表的末尾产生额外的空白空间。我想我很亲近,但我无法摆脱奇怪的空白空间
创建一个带边框的框架,将“细节溢出时打印”设置为TRUE,然后将所有细节带放入此框架中。
结果:不按预期工作:(
由于此报告不仅包含详细信息表中的表,而且表的高度是随机的。像背景或页脚中的边框这样的技巧不适合
我还能做什么?
答案 0 :(得分:2)
戴夫给出的选项是对的。
如果您关心仍在使用的空间,请将波段和文本字段高度设置为零。
在我的情况下使用Dave的选项工作(我不需要额外的空间使用)。
我把它作为PrintWhenExpression
放在我想在最后一页显示的字段中:
$P{REPORT_PARAMETERS_MAP}.get("lastPage")!=null
在0-heigth汇总带的0高度文本字段中为PrintWhenExpression
:
$P{REPORT_PARAMETERS_MAP}.put("lastPage",":)")
答案 1 :(得分:1)
在页面终止方面,选项有限。它甚至很难,因为如果你有空的时候没有显示的项目,它仍然假定使用了空格。
我会坚持使用列页脚或页脚作为您的最佳选择。
答案 2 :(得分:1)
有一个PrintWhenExpression
技巧可以帮助处理页脚:
How to hide Page X / Y when report is 1 page ? - JasperForge Forum
诀窍是在报告参数图中放置一个标志,然后使用该标志来决定是否应该打印文本(或字段,行等)。
要在页脚中使用一行,总会有一些页面带有额外的行。在这种情况下,报告始终从第1页开始,报表中的表始终在打印摘要带之前结束。这意味着,只要达到汇总带,就不再需要该行。因此:
使用PrintWhenExpression在页面页脚中添加一行:
new Boolean(!(Boolean.TRUE).equals($ P {REPORT_PARAMETERS_MAP} .get(“stopFlag”)))
然后使用PrintWhenExpression在Summary band中创建一个虚拟textField,如下所示:
$ P {REPORT_PARAMETERS_MAP}。把( “stopFlag”,Boolean.TRUE)
这个技巧有效,但可能需要对不同的布局进行一些调整。