Bad*_*uel 6 pdf-generation jasper-reports ireport
我在iReport中有一个包含3个字段(A,B,C)的表.我想打印行iff字段C不为空.例如,如果我的数据源中有2条记录:
A =第一,B =第二,C =第三
A = up,B = down,C = NULL
该表必须只有第一行.
我尝试在每个单元格中插入此表达式(在"表达时打印"属性中):
!$F{C}.equals(null)
Run Code Online (Sandbox Code Playgroud)
但是这样结果是第二行是空的(但是可见).
编辑:在第一个答案(现在已删除)之后,表格中的列如下所示:
<jr:column ...>
<jr:columnHeader ...>
<staticText>
<reportElement .../>
<text><![CDATA[ID]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell ...>
<textField isBlankWhenNull="false">
<reportElement ... isRemoveLineWhenBlank="true">
<printWhenExpression><![CDATA[$F{ID}!=null]]></printWhenExpression>
</reportElement>
<textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column ...>
<jr:columnHeader ...>
<staticText>
<reportElement .../>
<text><![CDATA[CITY]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell ...>
<textField isBlankWhenNull="false">
<reportElement ... isRemoveLineWhenBlank="true">
<printWhenExpression><![CDATA[$F{ID}!=null]]></printWhenExpression>
</reportElement>
<textFieldExpression><![CDATA[$F{CITY}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
Run Code Online (Sandbox Code Playgroud)
数据源是xml文件.我也试过isBlankWhenNull="true"但没有改变.这里有一个结果屏幕:

当您将 print when 表达式放在字段上时,只有该字段将被删除。因此,空间将保留。在细节带上放置相同的表达式,然后重试。
编辑:
进一步观察这个问题,我注意到在表元素的详细级别没有省略记录(打印表达式)的选项。正如您在 iReport 和架构定义中看到的那样,该选项不存在。isBlankWhenNull="true"此外,不起作用的原因是,即使文本字段为空,详细信息行仍然占用分配的高度。此外,您尝试修改的 PrintWhenExpression 应用于整个表而不是行。因此,似乎不可能按照您希望的方式进行。
在这里,我将向您提供以下步骤来解决您的问题:
((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("/root[c!='']")
祝你好运。
| 归档时间: |
|
| 查看次数: |
10697 次 |
| 最近记录: |