2012-05-24 3 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: Изменить размер шрифта по значению Param

Но это не сработало ....

ответ

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 30 ? «VERO»: «FALSO»]]>

+0

Я только что добавил образец к моему сообщению. Вы можете попробовать этот образец с демонстрационной версией db, встроенной в iReport –

+0

Да, вы можете протестировать отчет с iReport –

0

Я использую iReport 2.0.2 и хотя я могу вырезать и вставлять вышеизложенное и заставить его работать, когда я пытаюсь выполнить свою собственную версию с нуля, это не сработает.

В результате я создал два поля, накладывающих друг на друга с противоположной печатью в выражениях. Я определил, что с учетом длины окна, что 57 символов будут отображаться правильно при шрифте 10 pt.

Мой результат печати, когда выражения кончались так:

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.

Смежные вопросы