Jasper reports 使用iReport在条件的文本字段中设置背景色
我对iReport中的conditionalStyle有问题。我有以下文本字段(${nameField}=字段值): ${field1}=30${field2}=40${field3}=50Jasper reports 使用iReport在条件的文本字段中设置背景色,jasper-reports,ireport,Jasper Reports,Ireport,我对iReport中的conditionalStyle有问题。我有以下文本字段(${nameField}=字段值): ${field1}=30${field2}=40${field3}=50 ${field4}=23${field5}=1${field6}=45 ${field7}=34${field8}=20${field9}=0 我需要根据字段的值在每个文本字段中设置不同的背景。我创建新样式并设置条件: <style name="ColoredField"> <con
${field4}=23${field5}=1${field6}=45
${field7}=34${field8}=20${field9}=0 我需要根据字段的值在每个文本字段中设置不同的背景。我创建新样式并设置条件:
<style name="ColoredField">
<conditionalStyle>
<conditionExpression><![CDATA[$F{field1} == 300]]></conditionExpression>
<style mode="Opaque" backcolor="#FCFF00"/>
</conditionalStyle>
</style>
如您所见,该样式仅使用
$F{field1}
,我需要创建一个应用于每个文本字段的动态样式(或其他样式) 你的问题不清楚,你能说得更清楚些吗
<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>
我找不到直接的方法来完成这项任务-您必须为每个字段创建一个单独的样式 考虑到这一点,您可以将精力集中在创建一个小脚本上,该脚本可以用相同的方式为您拥有的字段复制XML。然后,您可以将XML复制/粘贴到报表源文件中。每次需要更改样式时,都必须返回到XML生成器。尝试以下方法:
<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>
Soulemane谢谢你的回答,好的。实际上,在你的答案中,你在一个名为ColoredField的样式中添加了多个条件(3),但是,如果你看,这个条件只适用于$F{field1}字段,我需要将这个样式应用于每个字段:$F{field2},$F{field3},$F{field4}。但是我不想为每一个字段重复该代码。实现这一点的一种方法是考虑给定颜色的固定值或值范围。例如,100=绿色,200=红色,200=黄色。然后将前面多条件样式中的$F{field1}替换为变量$V{varValueToBg}。这样,您就可以对differnt字段应用相同的样式,因为只要字段的值与某个条件匹配,bgcolor就会出现.Soulemane,但是我如何将每个字段的值分配给变量(在您的示例变量$V{varValueToBg})。我可以修改样式并添加反条件变量。但我不知道如何将每个字段的值赋给变量。(我很抱歉我的英语不好),谢谢你的帮助!