边界细节带

时间:2011-04-27 07:26:15

标签: jasper-reports ireport

我对如何在细节范围内显示边框有疑问,我想得到一些帮助。

比如说,详细信息带中的一列可能有很多LOTS数据,我的意思是有时一条记录实际上可能需要2~3页才能显示。

现在客户要求我们应该让报告始终显示边框的底线,只要它符合页面末尾(即使此记录尚未结束)

我尝试了什么:

  • 制作一个高度为1px的列页脚。
    将“浮动列页脚”设置为TRUE
    结果:它工作得很好,但如果列页脚后面有一个摘要带,则此行将在表的末尾产生额外的空白空间。我想我很亲近,但我无法摆脱奇怪的空白空间

  • 创建一个带边框的框架,将“细节溢出时打印”设置为TRUE,然后将所有细节带放入此框架中。

    结果:不按预期工作:(

由于此报告不仅包含详细信息表中的表,而且表的高度是随机的。像背景或页脚中的边框这样的技巧不适合

我还能做什么?

3 个答案:

答案 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)

这个技巧有效,但可能需要对不同的布局进行一些调整。