在条件样式中使用变量

时间:2012-09-04 18:59:28

标签: jasper-reports ireport

我有一个带有文本字段标题频段,其中包含计算出的变量 $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

3 个答案:

答案 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