【问题标题】:Set background color in textfield from condition using iReport使用 iReport 根据条件在文本字段中设置背景颜色
【发布时间】:2017-06-21 21:11:04
【问题描述】:

iReport 中的条件样式有问题。我有以下 textFields${nameField} = 字段值):

${field1}=30      ${field2}=40      ${field3}=50
${field4}=23     ${field5}=1     ${field6}=45
${field7}=34     ${field8}=20   ${field9}=0

我需要在每个 textField 中设置差异背景,具体取决于字段的值。我创建了一个新样式并设置了条件:

<style name="ColoredField">
   <conditionalStyle>
     <conditionExpression><![CDATA[$F{field1} == 300]]></conditionExpression>
    <style mode="Opaque" backcolor="#FCFF00"/>
    </conditionalStyle>
</style>

如您所见,样式只使用$F{field1},我需要制作一个动态样式(或其他东西),适用于每个textField

【问题讨论】:

    标签: jasper-reports ireport


    【解决方案1】:

    你的问题不清楚,你能说得更清楚一点吗?

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

    2. 在每个样式下添加多个条件样式如下:

    每个文本字段现在可以有不同的背景:

    <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>
    

    【讨论】:

    • Soulemane 感谢您的回答,好的。实际上,在您的答案中,您以一种名为 ColoredField 的样式添加了多个条件 (3),但是,如果您查看,该条件仅适用于字段 $F{field1},我需要将该样式应用于每个字段:$F{field2 },$F{field3},$F{field4}。但我不想为每个字段重复该代码。
    • 实现这一目标的一种方法是,如果您考虑给定颜色的固定值或值范围。例如 100 = 绿色,200= 红色,200= 黄色。然后将先前多条件样式中的 $F{field1} 替换为变量 $V{varValueToBg}。有了它,您可以将相同的样式应用于不同的字段,因为只要字段的值匹配一个条件,那么 bgcolor 就会出现。
    • Soulemane,但是我如何将每个字段的值分配给变量(在您的示例变量 $V{varValueToBg} 中)。我可以修改样式并添加条件变量。但我不知道如何将每个字段的值分配给变量。 (对不起,我的英语不好),感谢您的帮助!
    【解决方案2】:

    我找不到完成此任务的直接方法 - 您必须为每个字段创建单独的样式。

    考虑到这一点,您可以集中精力创建一个小脚本,该脚本使用与您拥有的字段相同的阶梯来复制 XML。然后您可以将 XML 复制/粘贴到报告源文件中。每次需要更改样式时,都必须返回 XML 生成器。

    【讨论】:

      【解决方案3】:

      试一试:

      <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>
      

      【讨论】:

        猜你喜欢
        • 2015-04-21
        • 1970-01-01
        • 2011-02-19
        • 1970-01-01
        • 2014-05-20
        • 1970-01-01
        • 2017-01-21
        • 2013-04-02
        • 2017-04-23
        相关资源
        最近更新 更多