Вопрос по ireport, jasper-reports – Использование переменных в условном стиле

6

у меня есть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.

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

Ваш Ответ

3   ответа
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>
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>

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

9

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

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

+1 хорошее решение

Похожие вопросы