如何使用类似的东西隐藏表格组件中的表格页脚" PrintWhenExpression"?

时间:2017-10-20 08:42:57

标签: jasper-reports

我正在使用Jaspersoft Studio,我在其中制作了一个Jasper报告,其中包含一个包含多个页脚(数据集组)的表。这些页脚包含跨细节/组计算的不同总和。

根据报告输入参数($P{myRepMode} == 1),需要显示一些页脚。

理想情况下,我希望组页脚有PrintWhenExpression字段,但不幸的是,Jasper Reports没有提供。样式(条件)似乎也不允许设置元素高度。在单元格中隐藏文本会使行保持空白但仍占用空间。

如何在条件下隐藏表格页脚?

P.S。我知道我可以将总和计算移动到查询数据集中以立即返回所有内容并根据一些提示格式化单元格,但这会污染非数据列/行的数据,还需要额外的工作。

1 个答案:

答案 0 :(得分:0)

AFIK您无法在printWhenExpression上添加jr:tableFooter唯一能够实现的功能就是利用textFields溢出功能。 (不考虑在java中详细说明JasperReport或JasperPrint的解决方案)

该方法是将jr:tableFooter的高度设置为1,使用高度为1的textFieldprintWhenExpression并选择"使用溢出"

示例

<jr:tableFooter height="1" rowSpan="1">
    <textField isStretchWithOverflow="true" isBlankWhenNull="false">
        <reportElement key="" x="0" y="0" width="90" height="1" isRemoveLineWhenBlank="true" uuid="9d1ad772-024d-4642-84b2-68654bf3752c">
            <printWhenExpression><![CDATA[MyExpression]]></printWhenExpression>
        </reportElement>
        <textFieldExpression><![CDATA["MyText"]]></textFieldExpression>
    </textField>
</jr:tableFooter>

这将接近您想要的设计,如果没有textField高度将只有1,如果文本它将显示所有文本。

但是,我个人不喜欢它,因为该字段在IDE设计视图中不会显示,我会考虑使用另一种方法textField使用浮点数表groupFooter或更改为普通子报告而不是jr:table。