【问题标题】:Print Empty table in iReport when associated query has no records当关联查询没有记录时,在 iReport 中打印空表
【发布时间】:2017-07-22 02:29:25
【问题描述】:

我正在使用 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)并将其与数据集相关联。

【问题讨论】:

标签: jasper-reports ireport xmltable


【解决方案1】:

据我所知,这不能用一张桌子来实现。但是,仍然有解决方法。

使用 Subreport 代替表格。使用表格完成的所有事情也可以使用子报表完成。您唯一需要照顾的就是这个属性。

When No Data

将其设置为

  • All Sections No Detail : 只显示头部信息
  • No Data Section:这样可以在No Data 波段中显示自定义消息。

希望这会有所帮助。

【讨论】:

  • @noble bhaskar 所以你使用子报表而不是表组件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 2011-07-16
  • 1970-01-01
相关资源
最近更新 更多