2012-04-12 24 views
3

空白行を表示するレポート用に1行にヌルテキストフィールド(文字列またはbigdecimal値が入ります)を入れました。私はそのライン内のレポート要素のプロパティisRemoveLineWhenBlankを使用し、ヌル行があり、空白行を削除するためにiReport:データ行なしのテキストフィールドを含む行を非表示にする方法は、さまざまな種類のデータが含まれています。

。しかし、それは動作しません。

誰か助けてくれますか?

スナップ: 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

あなたが欲しいものを示すスクリーンショットを投稿できますか? –

+0

pls上記​​のようにスクリーンショットを確認 – Sweety

+0

iReport(エクスポートの結果ではない)とjrxmlファイルのスニペットにレポートデザインのスクリーンショットを投稿できますか? –

答えて

1

あなたはあなたが望む結果を達成するために以下のサンプルを再生することができます。

(質問で述べたようプロパティをisRemoveLineWhenBlank を使用してと協力して、もちろん)フレーム要素の助けを借りて2つのテキストフィールド要素(2列)と行を非表示にする方法を示しています。

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はでレポートのデザイン:隠れため

結果を P1=null, P2=null, P3=3, P4=4

:全体のラインを隠すため The design in iReport

結果最初の列、唯一のフィールド、最初の行: P1=null, P2=2, P3=3, P4=4

+0

私はすべての要素をnull値で1行に置くと、行が消えてしまいます。デザインのスクリーンショットを見て、正しいcorner.forに検証情報があることを確認してください。 – Sweety

+0

@ruchisalviなぜ機能しないのですか?このブロックにフレームを使用しようとしましたか? –

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

関連する問題