Jasper Reports - 检查 table 是否为空(无记录)并隐藏 table 标签
Jasper Reports - check if table is empty (no records) and hide table label
我的场景:摘要字段上有 2 table,每个 table 都有自己的数据集。此外,每个 table 都有标签,因此每个 table.All 的顶部都有一个标签是可以的,但是如果 table 中没有数据,则不会打印 table 但 table 标签仍然可见。
如果 table 没有数据,我需要隐藏 table 标签。有可能吗?我找不到任何解决方案如何确定 table 是否为空,设置为隐藏标签的表达式。
有什么想法吗?
从您的 table 组件获取记录计数没有问题,这是通过返回值
完成的
<returnValue fromVariable="REPORT_COUNT" toVariable="TABLE_COUNT"/>
但是这不能解决你的问题,因为你不能设置printWhenExpression
的evalutationTime
,你只能设置evalutationTime
textFieldExpression
问题通常通过移动您的"table label"在tableheader
从 IDE 将您的列分组并在 table header.
内的 groupHeader
中添加 textField
示例(jrxml 结果)
<componentElement>
<reportElement key="table" style="table" x="0" y="33" width="360" height="50" uuid="6a7d5ab9-f15d-4676-85b2-1e48f016c155"/>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="tableData" uuid="fa5df3de-f4c5-4bfc-8274-bd064e8b81e6">
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
<jr:columnGroup width="217" uuid="c96f6ab0-8cce-4dc7-b686-da6928e7cabb">
<jr:tableHeader height="61" rowSpan="1">
<textField>
<reportElement x="0" y="0" width="217" height="61" uuid="98aa260d-7e84-4df7-89cc-fc1eabdcf656"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA["MY TABLE LABEL"]]></textFieldExpression>
</textField>
</jr:tableHeader>
<jr:column width="90" uuid="889a828a-ad48-40a0-81f4-326a95d6585c">
<jr:columnHeader style="table_CH" height="60" rowSpan="1"/>
<jr:detailCell style="table_TD" height="43" rowSpan="1">
<textField>
<reportElement x="0" y="0" width="90" height="43" uuid="82b2a835-4373-4638-b75a-d43f531678ba"/>
<textFieldExpression><![CDATA[$F{myField1}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="127" uuid="004c3afe-c39f-44e2-a82d-5c96697ebd7e">
<jr:columnHeader style="table_CH" height="60" rowSpan="1"/>
<jr:detailCell style="table_TD" height="43" rowSpan="1">
<textField>
<reportElement x="0" y="0" width="90" height="43" uuid="90287319-765f-49a0-9f80-0851f40f2b13"/>
<textFieldExpression><![CDATA[$F{myField2}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:columnGroup>
</jr:table>
</componentElement>
我的场景:摘要字段上有 2 table,每个 table 都有自己的数据集。此外,每个 table 都有标签,因此每个 table.All 的顶部都有一个标签是可以的,但是如果 table 中没有数据,则不会打印 table 但 table 标签仍然可见。
如果 table 没有数据,我需要隐藏 table 标签。有可能吗?我找不到任何解决方案如何确定 table 是否为空,设置为隐藏标签的表达式。
有什么想法吗?
从您的 table 组件获取记录计数没有问题,这是通过返回值
完成的<returnValue fromVariable="REPORT_COUNT" toVariable="TABLE_COUNT"/>
但是这不能解决你的问题,因为你不能设置printWhenExpression
的evalutationTime
,你只能设置evalutationTime
textFieldExpression
问题通常通过移动您的"table label"在tableheader
从 IDE 将您的列分组并在 table header.
内的groupHeader
中添加 textField
示例(jrxml 结果)
<componentElement>
<reportElement key="table" style="table" x="0" y="33" width="360" height="50" uuid="6a7d5ab9-f15d-4676-85b2-1e48f016c155"/>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="tableData" uuid="fa5df3de-f4c5-4bfc-8274-bd064e8b81e6">
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
<jr:columnGroup width="217" uuid="c96f6ab0-8cce-4dc7-b686-da6928e7cabb">
<jr:tableHeader height="61" rowSpan="1">
<textField>
<reportElement x="0" y="0" width="217" height="61" uuid="98aa260d-7e84-4df7-89cc-fc1eabdcf656"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA["MY TABLE LABEL"]]></textFieldExpression>
</textField>
</jr:tableHeader>
<jr:column width="90" uuid="889a828a-ad48-40a0-81f4-326a95d6585c">
<jr:columnHeader style="table_CH" height="60" rowSpan="1"/>
<jr:detailCell style="table_TD" height="43" rowSpan="1">
<textField>
<reportElement x="0" y="0" width="90" height="43" uuid="82b2a835-4373-4638-b75a-d43f531678ba"/>
<textFieldExpression><![CDATA[$F{myField1}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="127" uuid="004c3afe-c39f-44e2-a82d-5c96697ebd7e">
<jr:columnHeader style="table_CH" height="60" rowSpan="1"/>
<jr:detailCell style="table_TD" height="43" rowSpan="1">
<textField>
<reportElement x="0" y="0" width="90" height="43" uuid="90287319-765f-49a0-9f80-0851f40f2b13"/>
<textFieldExpression><![CDATA[$F{myField2}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:columnGroup>
</jr:table>
</componentElement>