2012-04-12 51 views
3

我有null文本字段(它包含字符串或bigdecimal值)放在單行拉爲我的報告顯示一個空行。iReport:如何隱藏文本字段沒有數據行的文本字段包含不同類型的數據

爲了刪除了我使用的屬性isRemoveLineWhenBlank在該行的報告元素空行空行。但那不行。

有人可以幫我這個嗎?

扣: enter image description here

輸出卡: enter image description here

JRXML:

<?xml version="1.0" encoding="UTF-8" ?> 
<!-- Created with iReport - A designer for JasperReports --> 
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"> 
<jasperReport 
     name="WEB_PREVIEW" 
     columnCount="1" 
     printOrder="Horizontal" 
     orientation="Portrait" 
     pageWidth="595" 
     pageHeight="900" 
     columnWidth="535" 
     columnSpacing="0" 
     leftMargin="30" 
     rightMargin="30" 
     topMargin="20" 
     bottomMargin="20" 
     whenNoDataType="NoPages" 
     isTitleNewPage="false" 
     isSummaryNewPage="false"> 
    <property name="ireport.scriptlethandling" value="0" /> 
    <property name="ireport.encoding" value="UTF-8" /> 
    <import value="java.util.*" /> 
    <import value="net.sf.jasperreports.engine.*" /> 
    <import value="net.sf.jasperreports.engine.data.*" /> 

    <parameter name="GROSS_RENTAL_INCOME_SQPA_LABEL" isForPrompting="false" class="java.lang.String"/> 
    <parameter name="GROSS_RENTAL_INCOME_SQPA" isForPrompting="false" class="java.math.BigDecimal"/> 
    <defaultValueExpression ><![CDATA["C:\\Development_New\\Cyprus\\Cyprus\\WebRoot\\report\\"]]></defaultValueExpression> 
    </parameter> 
    <background> 
      <band height="0" isSplitAllowed="true" > 
      </band> 
     </background> 
     <title> 
      <band height="0" isSplitAllowed="true" > 
      </band> 
     </title> 
     <pageHeader> 
      <band height="32" isSplitAllowed="true" > 
       <textField isStretchWithOverflow="true" isBlankWhenNull="true" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > 
        <reportElement 
         x="367" 
         y="105" 
         width="96" 
         height="12" 
         key="textField" 
         positionType="Float" 
         isRemoveLineWhenBlank="true"> 
          <printWhenExpression><![CDATA[new Boolean($P{GROSS_RENTAL_INCOME_SQPA}!=null)]]></printWhenExpression> 
         </reportElement> 
        <box></box> 
        <textElement> 
         <font pdfFontName="Helvetica-Bold" size="8" isBold="true"/> 
        </textElement> 
       <textFieldExpression class="java.lang.String"><![CDATA[$P{GROSS_RENTAL_INCOME_SQPA_LABEL}]]></textFieldExpression> 
       </textField> 
       <textField isStretchWithOverflow="true" pattern="###,##0.00" isBlankWhenNull="true" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > 
        <reportElement 
         x="472" 
         y="105" 
         width="48" 
         height="12" 
         key="textField" 
         positionType="Float" 
         isRemoveLineWhenBlank="true"> 
          <printWhenExpression><![CDATA[new Boolean($P{GROSS_RENTAL_INCOME_SQPA}!=null)]]></printWhenExpression> 
         </reportElement> 
        <box></box> 
        <textElement> 
         <font size="8"/> 
        </textElement> 
       <textFieldExpression class="java.math.BigDecimal"><![CDATA[$P{GROSS_RENTAL_INCOME_SQPA}]]></textFieldExpression> 
       </textField> 
       </band> 
     </detail> 
     <columnFooter> 
      <band height="0" isSplitAllowed="true" > 
      </band> 
     </columnFooter> 
     <pageFooter> 
      <band height="0" isSplitAllowed="true" > 
      </band> 
     </pageFooter> 
     <summary> 
      <band height="0" isSplitAllowed="true" > 
      </band> 
     </summary> 
</jasperReport> 
+0

你能張貼出你想要什麼畫面? – 2012-04-12 05:57:00

+0

請按上面的方法檢查屏幕截圖 – Sweety 2012-04-12 06:50:56

+0

您可以在iReport(不是導出結果)和jrxml文件的片段中發佈報告設計的屏幕截圖嗎? – 2012-04-12 07:29:58

回答

1

您可以播放以下樣本達到你想要的結果。

它演示瞭如何用兩個文本框元素(兩列)與框架元素幫助隱藏的行(在合作過程中的使用isRemoveLineWhenBlank財產在提問時說)。

JRXML文件代碼:

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport ... pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="0" bottomMargin="0"> 
    <parameter name="par1" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="par2" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="par3" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="par4" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <title> 
     <band height="139" splitType="Stretch"> 
      <line> 
       <reportElement x="10" y="61" width="520" height="1"/> 
      </line> 
      <line> 
       <reportElement x="10" y="127" width="520" height="1"/> 
      </line> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="10" y="85" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box leftPadding="10"> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par3} == null ? null : "P3: " + $P{par3}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="10" y="65" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box leftPadding="10"> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par1} == null ? null : "P1: " + $P{par1}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="62" y="65" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box leftPadding="10"> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par2} == null ? null : "P2: " + $P{par2}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="62" y="85" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box leftPadding="10"> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par4} == null ? null : "P4: " + $P{par4}]]></textFieldExpression> 
      </textField> 
      <frame> 
       <reportElement x="331" y="65" width="52" height="54"/> 
       <textField isBlankWhenNull="true"> 
        <reportElement x="0" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/> 
        <box leftPadding="10"> 
         <topPen lineWidth="1.0"/> 
         <leftPen lineWidth="1.0"/> 
         <bottomPen lineWidth="1.0"/> 
         <rightPen lineWidth="1.0"/> 
        </box> 
        <textElement/> 
        <textFieldExpression><![CDATA[$P{par3} == null ? null : "P3: " + $P{par3}]]></textFieldExpression> 
       </textField> 
       <textField isBlankWhenNull="true"> 
        <reportElement x="0" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/> 
        <box leftPadding="10"> 
         <topPen lineWidth="1.0"/> 
         <leftPen lineWidth="1.0"/> 
         <bottomPen lineWidth="1.0"/> 
         <rightPen lineWidth="1.0"/> 
        </box> 
        <textElement/> 
        <textFieldExpression><![CDATA[$P{par1} == null ? null : "P1: " + $P{par1}]]></textFieldExpression> 
       </textField> 
      </frame> 
      <frame> 
       <reportElement x="383" y="65" width="52" height="54"/> 
       <textField isBlankWhenNull="true"> 
        <reportElement x="0" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/> 
        <box leftPadding="10"> 
         <topPen lineWidth="1.0"/> 
         <leftPen lineWidth="1.0"/> 
         <bottomPen lineWidth="1.0"/> 
         <rightPen lineWidth="1.0"/> 
        </box> 
        <textElement/> 
        <textFieldExpression><![CDATA[$P{par2} == null ? null : "P2: " + $P{par2}]]></textFieldExpression> 
       </textField> 
       <textField isBlankWhenNull="true"> 
        <reportElement x="0" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/> 
        <box leftPadding="10"> 
         <topPen lineWidth="1.0"/> 
         <leftPen lineWidth="1.0"/> 
         <bottomPen lineWidth="1.0"/> 
         <rightPen lineWidth="1.0"/> 
        </box> 
        <textElement/> 
        <textFieldExpression><![CDATA[$P{par4} == null ? null : "P4: " + $P{par4}]]></textFieldExpression> 
       </textField> 
      </frame> 
      <textField isStretchWithOverflow="true"> 
       <reportElement x="16" y="0" width="115" height="51"/> 
       <box topPadding="10" leftPadding="10" bottomPadding="10" rightPadding="10"/> 
       <textElement> 
        <font isBold="true" isItalic="true"/> 
       </textElement> 
       <textFieldExpression><![CDATA["P1: " + $P{par1} + "\nP2: " + $P{par2} + "\nP3: " + $P{par3} + "\nP4: " + $P{par4}]]></textFieldExpression> 
      </textField> 
     </band> 
    </title> 
</jasperReport> 

報表的設計在iReport的The design in iReport

隱藏整條生產線的結果: P1=null, P2=null, P3=3, P4=4

用於隱藏結果第一列唯一一個字段,第一行: P1=null, P2=2, P3=3, P4=4

+0

行得到消失,如果我把所有元素在單行與空值value.see設計的屏幕截圖,我有驗證信息在右角。因爲它不工作。 – Sweety 2012-04-13 09:25:24

+0

@ruchisalvi爲什麼它不起作用?你是否嘗試使用這個塊的框架? – 2012-04-13 09:37:15

0

該解決方案不是幀。

添加printWhenExpression到文本框:

<printWhenExpression><![CDATA[$P{par1}!=null]]></printWhenExpression></reportElement> 

樣本:

<textField isBlankWhenNull="true"> 
<reportElement x="719" y="0" width="52" height="11"> 
    <printWhenExpression><![CDATA[$P{par1}!=null]]></printWhenExpression> 
</reportElement> 
<box> 
    <topPen lineWidth="1.0"/> 
    <leftPen lineWidth="1.0"/> 
    <bottomPen lineWidth="1.0"/> 
    <rightPen lineWidth="1.0"/> 
</box> 
<textElement /> 
<textFieldExpression><![CDATA[$P{par1}]]></textFieldExpression> 

+0

你好。我剛剛實施框架元素的解決方案,它工作正常(我也很驚訝,我需要使用框架元素)。但你的想法與isBlankWhenNull = true和printwhenExpression不起作用。你能用一些例子更詳細地解釋它嗎?爲什麼它不是很好的解決方案?謝謝。 – jNick 2014-04-28 13:44:26

相關問題