我有一个带有文本字段的标题频段,其中包含计算出的变量 $V{avg_perc}
。 文本字段将评估时间设置为报告,变量 resetType 相同。
现在我正在尝试使用条件样式设置此字段的背景颜色,但我不断收到类似以下内容的错误消息:
Invalid expression: !Double.isNaN($V{avg_perc}) && $V{avg_perc} >= 0.8
我在列页脚中使用相同的条件样式做同样的事情,即使我设置 evaluationTime,它也没有任何问题此字段报告。
删除!Double.isNaN($V{avg_perc})
后,我不再收到错误,但表达式仍无效。我的字段保持红色,这是任何条件无效时的基本颜色,无论$V{avg_perc}
具有哪个值。但它仍然可以在列页脚中使用。这是我的风格:
<style name="avg_color" mode="Opaque" backcolor="#FF0000" pdfFontName="Helvetica-Bold">
<conditionalStyle>
<conditionExpression><![CDATA[$V{avg_perc} >= 0.8]]></conditionExpression>
<style backcolor="#008000"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$V{avg_perc} >= 0.6 && $V{avg_perc} < 0.8]]></conditionExpression>
<style backcolor="#FFCC00"/>
</conditionalStyle>
</style>
使用过的字段和变量:
<field name="perc" class="java.lang.Double"/>
<variable name="avg_perc" class="java.lang.Double" calculation="Average">
<variableExpression><![CDATA[$F{perc}]]></variableExpression>
</variable>
知道如何让这件事发挥作用吗?我在3.7.4版本中使用 JasperReports 和 iReport 。
答案 0 :(得分:9)
我终于找到了解决问题的方法。添加
<property name="net.sf.jasperreports.style.evaluation.time.enabled" value="true"/>
在报告级别导致在评估元素时执行条件样式。 有关详细信息,请参阅Jaspersoft社区中的this answer。
答案 1 :(得分:3)
在你看来的ireport设计师。
单击该字段并在属性面板中:markup =样式化选择
右键点击fied。编辑表达式:
($F{fila1}.equals("c") ? "<style forecolor='red'>"+ $F{fila1}+"</style>" : $F{fila1})
或xml
<textFieldExpression><![CDATA[($F{fila1}.equals("c") ? "<style forecolor='red'>"+ $F{fila1}+"</style>" : $F{fila1})]]></textFieldExpression>
答案 2 :(得分:0)
根据您的要求修改此代码
<style name="alternateStyle" fontName="Arial">
<conditionalStyle>
<conditionExpression><![CDATA[new Boolean($V{AMOUNT}.intValue() == 0)]]></conditionExpression>
<style mode="Opaque" backcolor="#FF0000" isBold="true"/>
</conditionalStyle>
</style>
另请参阅此链接:Link