iReport: How to hide line with text fields without data line contains different kind of data
You can play the sample below to achieve the result you want.
It's demonstrates how to hide the row with two textField elements (two columns) with help of frame elements (of course in cooperation with using isRemoveLineWhenBlank property as said in the question).
The jrxml file code:
<?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>
The report's design in iReport:
The result for hiding the whole line:
The result for hiding the only one field in first column, first row:
Ruchi
Updated on August 02, 2022Comments
-
Ruchi almost 2 years
I have null textfields (it contains string or bigdecimal value) put on single line pulled for my report which display a blank line.
In order to remove the blank line that has null rows I used the property
isRemoveLineWhenBlank
for the report elements in that line. But that does not work.Can someone help me with this please?
snap:
output snap:
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>
-
Ruchi about 12 yearsrow get disappear if i put all elements in single row with null value.see the screen shot of design in that i have validation info in right corner.for that it doesn't work.
-
Alex K about 12 years@ruchisalvi Why it does not work? Did you try to use frames for this block?
-
anotherUser about 10 yearsHello. I just implemented solution with frame element and it works fine ( i was also surprised that i need to use frame element ). But your idea with isBlankWhenNull=true and printwhenExpression does not work. Can you explain it more detailed with some example ? Why it is not good solution ? Thanks.