使用iReport从条件设置文本字段中的背景颜色

时间:2014-01-26 04:29:54

标签: jasper-reports ireport

我在 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 的动态样式(或其他内容)。

3 个答案:

答案 0 :(得分:3)

你的问题不明确,你能更明确吗?

  1. 根据我的理解,每个值都意味着文本字段的特定背景,在这种情况下,您的条件样式值应该取决于变量。也许在您的风格中使用变量可以满足您的需求。

  2. 在每种样式下添加多个条件样式,如下所示:

  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>