我正在使用iReports版本3.7.6。 我通过使用数据集将其与查询相关联来动态生成表。
当查询返回记录时,我会打印一个包含所有记录的表。
但是当查询返回零记录时,我需要显示一个空表。但我只是走了一条水平线。
以下是jasper XML文件的一部分:
<componentElement>
<reportElement x="131" y="11" width="424" height="24"/>
<jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
<datasetRun subDataset="pmDataSet">
<parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
<jr:listContents height="24" width="424">
<textField>
<reportElement x="0" y="0" width="134" height="22"/>
<box>
<topPen lineWidth="0.5"/>
<rightPen lineWidth="0.5"/>
</box>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{COLUMN_1}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="134" y="0" width="120" height="22"/>
<box>
<topPen lineWidth="0.5"/>
<rightPen lineWidth="0.5"/>
</box>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[($F{COLUMN_2}) ? $F{COLUMN_2} : "(Blank)"]]></textFieldExpression>
</textField>
<textField>
<reportElement x="254" y="0" width="170" height="22"/>
<box>
<topPen lineWidth="0.5"/>
<rightPen lineWidth="0.5"/>
</box>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{COLUMN_3}]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
</componentElement>
这里我使用了“List”元素(jr:list)并将其与数据集相关联。
答案 0 :(得分:2)
据我所知,用表格无法实现。但是,仍然有一个工作。
使用 Subreport
代替表格。使用表完成的所有操作也可以使用子报表完成。只有你需要照顾的是这个属性。
的 When No Data
强> 的
将其设为
All Sections No Detail
:仅显示标题信息No Data Section
:以便可以在No Data
频段中显示自定义消息。希望这会有所帮助。