首页 文章

在条件样式中使用变量

提问于
浏览
6

我有一个带有文本字段的 Headers 带,其中包含计算的变量 $V{avg_perc} . 文本字段的 evaluationTime 设置为 Report ,与变量 resetType 相同 . 现在,我正在尝试使用条件样式设置此字段的背景颜色,但我不断收到一条错误消息,其中包含:

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

我在列页脚中使用相同的条件样式做了完全相同的事情并且它没有任何问题,即使我将此字段的 evaluationTime 也设置为 Report .

删除 !Double.isNaN($V{avg_perc}) 后,我不会't get an error anymore but the expression still doesn'工作 . 我的字段保持红色,这是任何条件无效时的基本颜色,无论 $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版本中使用JasperReports和iReport .

3 回答

  • 3

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

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

    在报告级别导致在评估元素时执行条件样式 . 有关详细信息,请参阅Jaspersoft社区中的this answer .

  • 9

    在你看来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>
    
  • 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

相关问题