2012-05-24 74 views
4
<style name="blueStyle" > 
    <conditionalStyle> 
     <conditionExpression><![CDATA[($P{INDIRIZZO}).length()>30 ? Boolean.TRUE : Boolean.FALSE]]></conditionExpression> 
     <style style="blueStyle" fontSize="3"/> 
    </conditionalStyle> 
</style> 
<parameter name="INDIRIZZO" class="java.lang.String"/> 

[...] 

<textField> 
    <reportElement x="178" y="94" width="157" height="17"/> 
    <textElement> 
     <font fontName="Arial" size="9"/> 
    </textElement> 
    <textFieldExpression class="java.lang.String"><![CDATA[$P{INDIRIZZO}]]></textFieldExpression> 
</textField> 

我想缩小字体时INDIRIZZO长度> 30 ...JasperReports的:通过帕拉姆值更改字体大小

但这并没有工作....

回答

10

您忘记将您的自定义样式应用于textField

正确的片段是:

<textField> 
     <reportElement style="blueStyle" x="178" y="94" width="157" height="17"/> 
     <textElement> 
      <font fontName="Arial" size="9"/> 
     </textElement> 
     <textFieldExpression class="java.lang.String"><![CDATA[$P{INDIRIZZO}]]></textFieldExpression> 
    </textField> 

我的工作样本:

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="conditional_styl" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
    <style name="style1" forecolor="#66FF66" backcolor="#009966"> 
     <conditionalStyle> 
      <conditionExpression><![CDATA[$P{parameter1}.length() < 2]]></conditionExpression> 
      <style forecolor="#FFCC00"/> 
     </conditionalStyle> 
    </style> 
    <parameter name="parameter1" class="java.lang.String"/> 
    <queryString> 
     <![CDATA[SELECT DOCUMENTID FROM POSITIONS]]> 
    </queryString> 
    <field name="DOCUMENTID" class="java.lang.Integer"/> 
    <detail> 
     <band height="20" splitType="Stretch"> 
      <textField> 
       <reportElement style="style1" x="0" y="0" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{DOCUMENTID}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
</jasperReport> 

fontSize的修改另一个工作示例:

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="conditional_styl" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
    <style name="style1" fontSize="6"> 
     <conditionalStyle> 
      <conditionExpression><![CDATA[$F{DOCUMENTID} % 2 == 0]]></conditionExpression> 
      <style fontSize="8"/> 
     </conditionalStyle> 
     <conditionalStyle> 
      <conditionExpression><![CDATA[$F{DOCUMENTID} % 3 == 0]]></conditionExpression> 
      <style fontSize="10"/> 
     </conditionalStyle> 
     <conditionalStyle> 
      <conditionExpression><![CDATA[$F{DOCUMENTID} % 5 ==0]]></conditionExpression> 
      <style fontSize="12"/> 
     </conditionalStyle> 
     <conditionalStyle> 
      <conditionExpression><![CDATA[$F{DOCUMENTID} % 7 ==0]]></conditionExpression> 
      <style fontSize="14"/> 
     </conditionalStyle> 
     <conditionalStyle> 
      <conditionExpression><![CDATA[$F{DOCUMENTID} % 11 ==0]]></conditionExpression> 
      <style fontSize="16"/> 
     </conditionalStyle> 
     <conditionalStyle> 
      <conditionExpression><![CDATA[$F{DOCUMENTID} % 13 ==0]]></conditionExpression> 
      <style fontSize="18"/> 
     </conditionalStyle> 
    </style> 
    <queryString> 
     <![CDATA[SELECT distinct DOCUMENTID FROM POSITIONS]]> 
    </queryString> 
    <field name="DOCUMENTID" class="java.lang.Integer"/> 
    <detail> 
     <band height="34" splitType="Stretch"> 
      <textField> 
       <reportElement style="style1" x="0" y="0" width="100" height="34"/> 
       <textElement/> 
       <textFieldExpression><![CDATA[$F{DOCUMENTID}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
</jasperReport> 
+0

什么都没有发生。我使用iReport进行了测试。这是原因吗?要检查iReport是否正确地评估了条件,我使用了它,例如文本字段,如:\t \t \t \t <![CDATA [$ P {INDIRIZZO} .length()> 30 ? “VERO”:“FALSO”]]>

+0

我刚刚在我的文章中添加了示例。你可以试试这个示例与演示数据库内置在iReport –

+0

是的,你可以测试报告与iReport –

0

我使用iReport 2.0.2尽管我可以剪切并粘贴上述内容并使其工作,但是当我尝试从头开始自己的版本时,它不起作用。

我最终做的是在表达式时创建两个彼此重叠的字段,并使用反向打印。我确定给定的长度的框中,57个字符将正确显示在10点字体。

我造成打印时表达弄成这个样子:

Box 1 ($F{DATA1}.length() >= 58 ? Boolean.TRUE : Boolean.FALSE) (font size is lowered) 
Box 2 ($F{DATA1}.length() < 58 ? Boolean.TRUE : Boolean.FALSE) (10 pt font size) 

我知道这是不是优雅,但它的工作原理。经过几天试图让风格工作和失败,我看了其他的选择,并解决了这一个。

我希望这种风格适合你,但如果不是这可能是一个好的计划B.