我在 iReport 中遇到了条件风格的问题。我有以下 textFields ( $ {nameField} =字段值):
$ {field1} = 30 $ {field2} = 40 $ {field3} = 50
$ {field4} = 23 $ {field5} = 1 $ {field6} = 45
$ {field7} = 34 $ {field8} = 20 $ {field9} = 0
我需要在每个textField中设置差异背景,取决于字段的值。我创建了一个新的Style并设置条件:
<style name="ColoredField">
<conditionalStyle>
<conditionExpression><![CDATA[$F{field1} == 300]]></conditionExpression>
<style mode="Opaque" backcolor="#FCFF00"/>
</conditionalStyle>
</style>
正如您所看到的,Style只使用$F{field1}
,我需要制作适用于每个 textField 的动态样式(或其他内容)。
答案 0 :(得分:3)
你的问题不明确,你能更明确吗?
根据我的理解,每个值都意味着文本字段的特定背景,在这种情况下,您的条件样式值应该取决于变量。也许在您的风格中使用变量可以满足您的需求。
在每种样式下添加多个条件样式,如下所示:
每个textField现在可以有不同的背景:
<style name="ColoredField">
<conditionalStyle>
<conditionExpression><![CDATA[$F{field1} == 100]]></conditionExpression>
<style mode="Opaque" backcolor="#FCFFFF"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$F{fiCeld1} == 200]]></conditionExpression>
<style mode="Opaque" backcolor="#00FF00"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$F{field1} == 300]]></conditionExpression>
<style mode="Opaque" backcolor="#FCFF00"/>
</conditionalStyle>
</style>
答案 1 :(得分:1)
我无法找到完成此任务的直接方法 - 您必须为每个字段创建单独的样式。
考虑到这一点,您可以集中精力创建一个小脚本,该脚本使用与您拥有的字段相同的窗口来复制XML。然后,您只需将XML复制/粘贴到报告源文件中即可。每次需要更改样式时,都必须返回XML生成器。
答案 2 :(得分:0)
尝试一下:
<style name="myStyle" fontName="Arial">
<conditionalStyle>
<conditionExpression><![CDATA[new Boolean($V{SANCTION_AMOUNT_MEASURE}.intValue() == 100)]]></conditionExpression>
<style forecolor="#FF0000" isBold="true"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[new Boolean($V{SANCTION_AMOUNT_MEASURE}.intValue() == 200)]]></conditionExpression>
<style forecolor="#00FF00" isBold="true"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[new Boolean($V{SANCTION_AMOUNT_MEASURE}.intValue() == 300)]]></conditionExpression>
<style forecolor="#0000FF" isBold="true"/>
</conditionalStyle>
</style>