bogdangh Posted November 22, 2006 Share Posted November 22, 2006 Hi,if the report has multiple column groups, can some of them be hidden/collapsed with printWhenExpression and removeLineWhenBlank (or any other solution) ? I want to remove/collapse the entire column group if there are no values to show. The code i used:Code:<?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="aaa" columnCount="1" printOrder="Vertical" orientation="Portrait" pageWidth="800" pageHeight="1000" columnWidth="740" 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.*" /> <field name="commodity" class="java.lang.String"/> <field name="company" class="java.lang.String"/> <field name="deliv" class="java.lang.String"/> <field name="pht" class="java.lang.String"/> <field name="value" class="java.lang.Double"/> <background> <band height="0" isSplitAllowed="true" > </band> </background> <title> <band height="0" isSplitAllowed="true" > </band> </title> <pageHeader> <band height="0" isSplitAllowed="true" > </band> </pageHeader> <columnHeader> <band height="0" isSplitAllowed="true" > </band> </columnHeader> <detail> <band height="0" isSplitAllowed="true" > </band> </detail> <columnFooter> <band height="0" isSplitAllowed="true" > </band> </columnFooter> <pageFooter> <band height="0" isSplitAllowed="true" > </band> </pageFooter> <summary> <band height="700" isSplitAllowed="true" > <crosstab > <reportElement x="14" y="20" width="702" height="660" key="crosstab-1"/> <crosstabHeaderCell> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> </cellContents> </crosstabHeaderCell> <rowGroup name="company" width="100"> <bucket> <bucketExpression class="java.lang.String"><![CDATA[$F{company}]]></bucketExpression> </bucket> <crosstabRowHeader> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="1Point" rightBorderColor="#000000" bottomBorder="1Point" bottomBorderColor="#000000"/> <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement x="0" y="0" width="100" height="30" key="textField"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$V{company}]]></textFieldExpression> </textField> </cellContents> </crosstabRowHeader> </rowGroup> <rowGroup name="deliv" width="100"> <bucket> <bucketExpression class="java.lang.String"><![CDATA[$F{deliv}]]></bucketExpression> </bucket> <crosstabRowHeader> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement x="0" y="0" width="100" height="30" key="textField"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$V{deliv}]]></textFieldExpression> </textField> </cellContents> </crosstabRowHeader> </rowGroup> <columnGroup name="commodity" height="25" headerPosition="Center"> <bucket> <bucketExpression class="java.lang.String"><![CDATA[$F{commodity}]]></bucketExpression> </bucket> <crosstabColumnHeader> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textField isStretchWithOverflow="false" isBlankWhenNull="true" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement x="0" y="0" width="50" height="25" key="textField" isRemoveLineWhenBlank="true"> <printWhenExpression><![CDATA[new Boolean($V{commodity} != null)]]></printWhenExpression> </reportElement> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$V{commodity}]]></textFieldExpression> </textField> </cellContents> </crosstabColumnHeader> </columnGroup> <columnGroup name="pht" height="25" headerPosition="Center"> <bucket> <bucketExpression class="java.lang.String"><![CDATA[$F{pht}]]></bucketExpression> </bucket> <crosstabColumnHeader> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textField isStretchWithOverflow="false" isBlankWhenNull="true" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement x="0" y="0" width="50" height="25" key="textField" isRemoveLineWhenBlank="true"> <printWhenExpression><![CDATA[new Boolean($V{pht} != null)]]></printWhenExpression> </reportElement> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$V{pht}]]></textFieldExpression> </textField> </cellContents> </crosstabColumnHeader> </columnGroup> <measure name="value_Nothing" class="java.lang.Double"> <measureExpression><![CDATA[$F{value}]]></measureExpression> </measure> <crosstabCell width="50" height="30"> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" > <reportElement x="0" y="0" width="50" height="30" key="textField"/> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> <textElement textAlignment="Center" verticalAlignment="Middle"> <font/> </textElement> <textFieldExpression class="java.lang.Double"><![CDATA[$V{value_Nothing}]]></textFieldExpression> </textField> </cellContents> </crosstabCell> <crosstabCell width="0" height="30" columnTotalGroup="pht"> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> </cellContents> </crosstabCell> <crosstabCell width="0" height="30" columnTotalGroup="commodity"> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> </cellContents> </crosstabCell> <crosstabCell width="50" height="0" rowTotalGroup="deliv"> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> </cellContents> </crosstabCell> <crosstabCell width="0" height="0" rowTotalGroup="deliv" columnTotalGroup="pht"> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> </cellContents> </crosstabCell> <crosstabCell width="0" height="0" rowTotalGroup="deliv" columnTotalGroup="commodity"> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> </cellContents> </crosstabCell> <crosstabCell width="50" height="0" rowTotalGroup="company"> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> </cellContents> </crosstabCell> <crosstabCell width="0" height="0" rowTotalGroup="company" columnTotalGroup="pht"> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> </cellContents> </crosstabCell> <crosstabCell width="0" height="0" rowTotalGroup="company" columnTotalGroup="commodity"> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> </cellContents> </crosstabCell> <whenNoDataCell> <cellContents mode="Transparent"> <box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/> </cellContents> </whenNoDataCell> </crosstab> </band> </summary></jasperReport> But instead of removing the entire column group, the group is shown with no values inside. This is quite important so any help will be greatly appreciated. Link to comment Share on other sites More sharing options...
lucianc Posted November 22, 2006 Share Posted November 22, 2006 Unfortunately it doesn't work like this (as you already observed empirically). The crosstab renderer does not shrink/collapse a cell when its contents does not print (actually the logic would be to shrink/collapse an entire row when no content prints in any of the cells on that row). I'm afraid there is no other way to achieve such functionality. You can post it as a feature request here if you think it would be useful for others as well and if you have a clear case about how such a feature would work. If you would be able to decide before filling the report whether a column group needs to be hidden, you could try to alter the report design by removing the column group, and then recompile the design and fill the report. Regards,Lucian Link to comment Share on other sites More sharing options...
bogdangh Posted November 22, 2006 Author Share Posted November 22, 2006 I'll try to modify the report design. I though it was an easier way, directly from the jrxml. Thank you B.Post edited by: bogdangh, at: 2006/11/22 13:50 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now