【问题标题】:JasperReports: How to print a "... continues in next column/page" message when content doesn't fitJasperReports:当内容不适合时,如何打印“...在下一列/页中继续”消息
【发布时间】:2016-03-23 16:48:46
【问题描述】:

我有一个“父”jrxml,我们称之为“类”,看起来像这样:

<band height="100" splitType="Prevent">
  <textField isStretchWithOverflow="true">
  <textField isStretchWithOverflow="true">
  <subreport>
    <subreportExpression>
      <![CDATA["student.jasper"]]>
    </subreportExpression>

有 n 个子报表,每个“学生”一个。 “学生”子报告只是一些文本字段。

<band height="35">
  <textField isStretchWithOverflow="true">
    <textFieldExpression>
      <![CDATA[$F{first_name}]]>
    </textFieldExpression>
  </textField>
  <textField isStretchWithOverflow="true">
    <textFieldExpression>
      <![CDATA[$F{last_name}]]>
    </textFieldExpression>
  </textField>

如果内容不完全适合一列,我想做的是在列底部打印“此类继续在下一列/页中”消息。

JasperReports 可以做到这一点吗?

【问题讨论】:

  • 感谢该链接,它对我帮助很大。但它并不适用于所有情况。许多列底部发生的事情(我使用的是 3 列报告)是,如果 next 类不适合剩余的空间,它会从下一列开始,但是,因为我在每个类的页脚子报表中都有“...继续”,它在列底部打印“...继续”。使当前的 Class 看起来在下一列中继续,但实际上它是下一个 Class。不确定在这种情况下是否有办法告诉 Jasper 不打印页脚 ...
  • 没有minimal reproducible example 很难说,但是 printWhenExpression??
  • 好吧,我真的不能提供一个例子,因为报告本身使用了我无法公开的自定义 Java 对象(包装器)。可以说解决方案不起作用。我需要的是子报表级别的 ,它仅在当前子报表的内容溢出到下一列/页面时显示。我已经尝试过 ,但似乎没有一个能够做到这一点。我也找不到可以提供帮助的 ; api 中没有任何内容可以告诉您内容是否会溢出。不过谢谢你的帮助。
  • 你不能用一些cvs数据做一个简单的例子吗?把它去掉一些cvs中的数据和一个简单的jrxml。我不知道它是否可以解决,但至少社区可以完全理解您的问题并尝试找到解决方案。

标签: jasper-reports


【解决方案1】:

最后,Petter Friburg 发布的链接解决了我的问题。直到我做了一大堆测试,我才认为它确实如此。首先,我用一个更简单的报告版本进行了测试,没有所有的包装器等。它就像一个魅力。但后来我给报告增加了另一个层次的复杂性。我为这篇文章简化了它们,但实际上它们更像

class.jrxml
  student.jrxml
    address.jrxml

所以每个班级有 n 个学生,每个学生有 n 个地址。一旦我将 pageFooter 和 lastPageFooter 标签放在 address.jrxml 中,它就可以正常工作。

我的理解是,如果我把它放在 student.jrxml 中,它也应该可以工作。但它没有。但是,将它放在 address.jrxml 中是有道理的,因为如果 that 信息不适合该列,那么 student.jrxml 内容显然也不适合,因为地址。 jrxml 是 student.jrxml 的部分

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    相关资源
    最近更新 更多