2012-09-04 48 views
5

使用变量我有一个标题带与包含计算可变$V{avg_perc}一个文本字段。该文本字段evaluationTime设置为报告,同为变量resetType。 现在我正在尝试设置该字段的背景颜色与条件样式但我不断收到错误消息说是这样的:在条件样式

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

我在做同样的事情与同条件风格列脚并且它没有任何问题,即使我也将此字段的评估时间设置为报告

删除!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中使用了JasperReportsiReport

+0

你是什么* iReport的*设置这个属性:*** org.eclipse.jdt.core.compiler.source ***,*** org.eclipse.jdt.core.compiler。合规性***,*** org.eclipse.jdt.core.compiler.codegen.TargetPlatform ***? –

+0

1.5全部为 – YingYang

+0

您可以发布*** avg_perc ***变量定义吗?顺便说一句,表达式'!Double.isNaN($ F {avg_perc})&& $ F {avg_perc}> = 0.8'适用于我 - 我在场上改变了变量。 –

回答

8

我终于找到了解决我的问题。在报告级别添加

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

引起在指元件被评估的时刻要执行的条件样式。 有关更多信息,请参阅Jaspersoft社区中的this answer

+0

+1不错的解决方案 –

2

在您的视图ireport designer。

点击领域,并且在属性面板:标记=样式化选择

右击田间。编辑表达式:

($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