Выражение поля в iReport
Я пытаюсь привыкнуть к iReport
прежде чем использовать его в реальном проекте на следующей неделе, и я, кажется, уже где-то сложен. я использую iReport
3.7.0 на платформе Windows XP + Java 1.6
Звучит легко изменить цвет поля в зависимости от его содержания или вычислить сумму числа в поле в зависимости от условий, но на практике это занимает слишком много времени. У меня есть запрос сказать:
SELECT COUNT(gender) AS total_by_gender, gender, account_status FROM user_account ua, user_profile up WHERE ua.user_profile_id=up.user_profile_id GROUP BY gender,account_status
это дает мне что-то вроде этого:
| total_by_gender | пол | account_status | | 160 | Женский | ВКЛЮЧЕНО | | 26 | Женский | НЕПРАВИЛЬНОЕ | | 100 | Мужской | ВКЛЮЧЕНО | | 10 | Мужской | НЕ ПОДТВЕРЖДЕН |
Теперь я хочу ENABLED
Текст, чтобы посмотреть сказать green
а также UNCONFIRMED
сказать `красный. Для этого я добавил текстовое поле с этим выражением
$F{account_status}.equals( new String("ENABLED") ) ? "<style forecolor='#ff0000'>" + $F{account_status}.toString() + "</style>" :"<style forecolor='#999999'>" + $F{account_status}.toString() + "</style>"
//i've tried this too
$F{account_status}.contentEquals( new String("ENABLED") ) ?
//and even
($F{account_status}.toString =="ENABLED" ) ?
хорошо для каждого из них это дает мне что-то вроде того же текста, как <style>
(я думаю, что это печатает все выражение условия) вместо цветного текста unconfirmed
или же enabled
,
Моя вторая проблема заключается в том, что я хочу сделать все unconfirmed
и все enabled
, я могу сделать нормальное выражение суммы, но с условием я понятия не имею. Кто-нибудь может пролить свет? Спасибо за прочтение
2 ответа
Попробуй это. Определите стиль, как показано ниже.
<style name="myStyle" isDefault="false" mode="Transparent">
<conditionalStyle>
<conditionExpression><![CDATA['YOUR CONDITION']]></conditionExpression>
<style isDefault="false" style="myStyle" backcolor="#E6DAC3"/>
</conditionalStyle>
</style>
И используйте это в вашем textFieldExpression
<reportElement style="myStyle" x="1" y="0" width="100" height="15"/>
Два вопроса здесь. 1. Ваше условие не работает. Попробуйте $F{account_status}.equals("ВКЛЮЧЕНО"). Это будет работать. 2. Вы хотите раскрасить текст на основе некоторых условий. Проверьте, поддерживает ли iReport условное окрашивание текстового поля. Если это так, постарайтесь не загрязнять содержимое информацией о цвете (). Информация о цвете должна быть в текстовом поле, а не в текстовом поле. Пожалуйста, дайте полное определение текстового поля, которое вы используете.
Я сам попробую завтра.