Форматирование поля данных данных на основе условия
Я новичок в 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>
И присваиваем стиль каждому столбцу, работая со мной:)