2013-09-23 2 views
0

У меня есть список статических текстов в отчете JasperReports, которые отображаются одна под другойОтображение списка элементов staticText: как удалить нулевые значения?

A 
B 
C 
D 
E 

мне нужны элементы, чтобы рухнуть в случае, если некоторые из них не печатаются. (Эти статические тексты являются метками и не будут напечатаны, если соответствующее значение равно нулю, используя печать при выражении)

Пример: Если B равно null, результат должен выглядеть так: без каких-либо пробелов, где B. (C, D, E не должен всплывать)

A 
C 
D 
E 

я не смог заставить его работать, используя свойства, такие как Remove Line Когда Blank, Тип установки в качестве Float и т.д. Существует нет свойство Пустой, когда Null для статических текстов, как есть для текстовых полей. Эта вещь работает с текстовыми полями.

Образец кода Я придумал. Пожалуйста, дайте мне знать, если в этом случае есть что-то не так:

<detail> 
     <band height="170" splitType="Stretch"> 
      <staticText> 
       <reportElement uuid="df801bc0-7c70-42c3-bc34-a8d735a96388" positionType="Float" x="88" y="15" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <textElement/> 
       <text><![CDATA[A]]></text> 
      </staticText> 
      <staticText> 
       <reportElement uuid="bdeb24d3-74b9-4b93-a2ad-451732e500b5" positionType="Float" x="88" y="35" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <textElement/> 
       <text><![CDATA[B]]></text> 
      </staticText> 
      <staticText> 
       <reportElement uuid="e68dc5fd-ed4f-46e0-aa5d-be1edc652aa3" positionType="Float" x="88" y="55" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <textElement/> 
       <text><![CDATA[]]></text> 
      </staticText> 
      <staticText> 
       <reportElement uuid="0b7481b2-33cd-4573-84b2-4a6738ca0ee3" positionType="Float" x="88" y="75" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <textElement/> 
       <text><![CDATA[D]]></text> 
      </staticText> 
      <staticText> 
       <reportElement uuid="2b45cded-10f3-46b5-a87b-5c844e61b247" positionType="Float" x="88" y="95" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <textElement/> 
       <text><![CDATA[E]]></text> 
      </staticText> 
     </band> 
    </detail> 

Неужели кто-нибудь решил эту проблему?

+0

Если вы говорите о * StaticText *, что является основанием для добавьте этот элемент с * значением Null *? Можете ли вы разместить файл * jrxml *? –

+0

как я сказал: «Эти статические тексты являются метками и не будут напечатаны, если соответствующее значение равно null, используя печать при выражении» - у меня есть список элементов формы «Ярлык: Значение», метка не отображается, если значение is null – anon

+1

Не могли бы вы поделиться с нами jrxml? Это облегчило бы диагностику проблемы. – GenericJon

ответ

0

Пожалуйста, отметьте каждую метку: «Значение» в отдельной строке детализации и используйте печать, если выражение на всей детализации.

0

Вы должны установить isPrintRepeatedValues ​​ значение атрибута как ложные для StaticText с пустой строкой.

jrxml файл:

<?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="remove_empty_static" language="groovy" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e6315839-7098-4914-a0c9-a602d8a05d59"> 
    <title> 
     <band height="170" splitType="Stretch"> 
      <staticText> 
       <reportElement uuid="df801bc0-7c70-42c3-bc34-a8d735a96388" positionType="Float" x="88" y="15" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <textElement/> 
       <text><![CDATA[A]]></text> 
      </staticText> 
      <staticText> 
       <reportElement uuid="bdeb24d3-74b9-4b93-a2ad-451732e500b5" positionType="Float" x="88" y="35" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <textElement/> 
       <text><![CDATA[B]]></text> 
      </staticText> 
      <staticText> 
       <reportElement uuid="e68dc5fd-ed4f-46e0-aa5d-be1edc652aa3" positionType="Float" isPrintRepeatedValues="false" x="88" y="55" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <textElement/> 
      </staticText> 
      <staticText> 
       <reportElement uuid="0b7481b2-33cd-4573-84b2-4a6738ca0ee3" positionType="Float" x="88" y="75" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <textElement/> 
       <text><![CDATA[D]]></text> 
      </staticText> 
      <staticText> 
       <reportElement uuid="2b45cded-10f3-46b5-a87b-5c844e61b247" positionType="Float" x="88" y="95" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <textElement/> 
       <text><![CDATA[E]]></text> 
      </staticText> 
     </band> 
    </title> 
</jasperReport> 

Результат будет (с помощью предварительного просмотра в иРепорт):

enter image description here

Я не знаю, почему, но это работает:)

Примечание:

Я тестировал этот образец с кодом Java - результат тот же.

0

Попробуйте с printWhenExpression:

Имя поля (тип String): firstName

 <staticText> 
      <reportElement x="60" y="185" width="130" height="20" uuid="6d98f418-7f61-42ca-ac96-aea325e2aad1"> 
       <printWhenExpression><![CDATA[$F{firstName} != null]]></printWhenExpression> 
      </reportElement> 
      <text><![CDATA[FirstName:]]></text> 
     </staticText> 

     <textField isBlankWhenNull="true"> 
      <reportElement x="265" y="222" width="181" height="20" uuid="4a04a05a-424a-47f1-a9f9-eecc9c7120c1"> 
       <printWhenExpression><![CDATA[$F{firstName} != null]]></printWhenExpression> 
      </reportElement> 
      <textFieldExpression><![CDATA[$F{firstName}]]></textFieldExpression> 
     </textField> 

Для отображения списка

 <textField isBlankWhenNull="true"> 
      <reportElement x="0" y="11" width="545" height="17" uuid="8f1b435d-40f4-4e59-a357-b3c2fcc38811"> 
      <printWhenExpression><![CDATA[$F{_THIS} != null]]></printWhenExpression> 
      </reportElement> 
      <textFieldExpression><![CDATA[$F{_THIS}]]></textFieldExpression> 
     </textField> 
Смежные вопросы