Использование переменных в условном стиле

у меня естьTitle группа сText Field содержащий рассчитанныйVariable $V{avg_perc},Text Field имеетevaluationTime установлен вReportто же самое дляVariables resetType. Now I'm trying to set the background color of this field with a Conditional Style но я продолжаю получать сообщение об ошибке, говорящее что-то вроде:

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

Я делаю то же самое с тем жеConditional Style вColumn Footer и это работает без проблем, даже если я установилevaluationTime для этого поляReport тоже.

После удаления!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>

Есть идеи, как заставить эту вещь работать? Я используюJasperReports а такжеiReport в версии 3.7.4.

 YingYang05 сент. 2012 г., 10:25
1,5 для всех
 Alex K05 сент. 2012 г., 11:11
Можете ли вы опубликоватьavg_perc определение переменной? Кстати, выражение!Double.isNaN($F{avg_perc}) && $F{avg_perc} >= 0.8 у меня работает - я изменил переменную на поле.
 YingYang05 сент. 2012 г., 11:19
Я добавил определения полей и переменных в свой вопрос.
 Alex K05 сент. 2012 г., 10:15
Какой твойiReport настройки этого свойства:org.eclipse.jdt.core.compiler.source, org.eclipse.jdt.core.compiler.compliance, org.eclipse.jdt.core.compiler.codegen.TargetPlatform?
 Alex K05 сент. 2012 г., 13:26
ИМХО, выражение вconditionalStyle работает как значение сevaluationTime равняетсяNow, Вы можете проверить это с помощью простого теста - вы можете добавить дваfields с<textFieldExpression class="java.lang.Double"><![CDATA[$V{avg_perc}]]></textFieldExpression> и разные значения (Now а такжеReport) изevaluationTime имущество

Ответы на вопрос(3)

нажмите на поле и на панели свойств .: разметка = стиль выбран

Щелкните правой кнопкой мыши на 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>

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

А также сослаться на эту ссылку:Ссылка на сайт

Решение Вопроса

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

на уровне отчета вызываетConditional Style выполняется в тот момент, когда элемент оценивается. Увидетьэтот ответ в сообществе Jaspersoft для получения дополнительной информации.

 05 сент. 2012 г., 14:52
+1 хорошее решение

Ваш ответ на вопрос