Форматирование поля данных данных на основе условия

Я новичок в JasperReports. Я разрабатываю отчет, используя iReport. Мое требование: у меня есть два значения (Fields) x, y для сравнения. Если x < y тогда цвет данных для y должен быть изменен на "черный", а если больше, то цвет данных y должен быть изменен на "красный".

Пожалуйста, посоветуйте мне, как это сделать и где проверить.

Ответ 1

Там есть обсуждение на форумах JasperForge по этой теме, это, вероятно, самая важная часть:

Сначала перетащите поле, в котором вы хотите иметь дианамический цвет дважды. Измените цвет фона для первого поля на желтый, а второе - на красный. Теперь щелкните правой кнопкой мыши желтое поле, выберите "Свойства", выберите "Общая вкладка" и напишите этот код в поле "Печать при выражении": (обязательно замените myconditionalfield своим фактическим именем поля) $F {MyConditinalField}.intValue() >= 5 &; & $F {MyConditinalField}.intValue() < 10? Boolean.TRUE: Boolean.FALSE//if >= 5 и < 10 затем показывают желтое поле//Код для красного поля в том же месте, что и выше $F { MyConditinalField}.intValue() >= 10? Boolean.TRUE: Boolean.FALSE Надеюсь, это поможет.

Это не совсем то, что вам нужно, но может быть достаточно близко, чтобы подтолкнуть вас в правильном направлении.

Ответ 2

Я знаю, что это старый вопрос, но я предполагаю, что Jasper Reports изменился. Теперь вы можете выполнить это с помощью условных стилей.

В iReport вы создаете новый стиль и даете ему имя. Вы можете поместить любые настройки по умолчанию, такие как шрифт, цвет, размер текста и т.д. В стиле. Затем вы щелкните правой кнопкой мыши по Stlye и выберите "Добавить условный стиль". Затем в поле или в полях, которые вы хотите применить к нему, вы устанавливаете стиль в том, который вы создали.

Итак, в вашем примере я бы установил Forecolor в основной stlye черным, установите выражение условия в условном стиле как

$F{y} > $F{x}

и Forecolor в условном Stlye на красный. Затем в разделе подробностей, где вы располагаете поле y, задайте стиль тому, который мы создали.

Ответ 3

Пример для цвета четной строки и нечетной строки ниже, надеюсь, что help

<style name="BackgroundStyle" mode="Opaque" backcolor="#FFFFFF">

    <conditionalStyle>
        <conditionExpression><![CDATA[Boolean.valueOf($V{REPORT_COUNT}.intValue() % 2 == 0)]]></conditionExpression>
        <style backcolor="#CCFFCC"/>
    </conditionalStyle>
</style>

И присваиваем стиль каждому столбцу, работая со мной:)