7

我有一个包含计算变量的文本字段的标题带。文本字段评估时间设置为报告变量resetType相同。现在我正在尝试使用条件样式设置此字段的背景颜色,但我不断收到一条错误消息,内容如下: $V{avg_perc}

Invalid expression: !Double.isNaN($V{avg_perc}) && $V{avg_perc} >= 0.8

我在列页脚中使用相同的条件样式执行完全相同的操作,并且即使我将此字段的评估时间也设置为报告,它也可以正常工作。

删除后!Double.isNaN($V{avg_perc})我不再收到错误,但表达式仍然不起作用。当没有任何条件有效时,我的字段保持红色,这是基本颜色,无论哪个值$V{avg_perc}都有。不过,它仍然可以在Column Footer中使用。这是我的风格:

<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 版中使用JasperReportsiReport

4

3 回答 3

10

我终于找到了解决我的问题的方法。添加

<property name="net.sf.jasperreports.style.evaluation.time.enabled" value="true"/>

在报告级别会导致在评估元素时执行条件样式。有关更多信息,请参阅Jaspersoft 社区中的此答案

于 2012-09-05T12:50:45.770 回答
3

在您看来 ireport 设计师。

单击该字段并在属性面板中。:标记=选定样式

右键单击字段。编辑表达式:

($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>
于 2013-08-06T22:00:21.597 回答
1

根据您的要求修改此代码

<style name="alternateStyle" fontName="Arial">
    <conditionalStyle>
        <conditionExpression><![CDATA[new Boolean($V{AMOUNT}.intValue() == 0)]]></conditionExpression>
        <style mode="Opaque" backcolor="#FF0000" isBold="true"/>
    </conditionalStyle>
</style>

并参考这个链接:链接

于 2017-06-21T13:23:03.270 回答