JasperReports:高度相同的两列,垂直排列

时间:2019-01-09 07:44:08

标签: layout jasper-reports

我尝试找出一种将报表分为两列(垂直排列)的方式,它们具有相同的高度。是否可以不将数据拆分为两个子报表?

我在一个页面上有一些标题带,一个列标题带和一个摘要带。

在列标题区域中,我有我的子报表 Locations.jrxml

Locations.jrxml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 7.2.0.final using JasperReports Library version 6.6.0  -->
<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="Location" columnCount="2" pageWidth="555" pageHeight="100" whenNoDataType="AllSectionsNoDetail" columnWidth="267" columnSpacing="20" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="79ed8d05-44c2-4589-9b0e-07bbb1c93efb">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<property name="com.jaspersoft.studio.unit." value="pixel"/>
<property name="com.jaspersoft.studio.unit.pageHeight" value="pixel"/>
<property name="com.jaspersoft.studio.unit.pageWidth" value="pixel"/>
<property name="com.jaspersoft.studio.unit.topMargin" value="pixel"/>
<property name="com.jaspersoft.studio.unit.bottomMargin" value="pixel"/>
<property name="com.jaspersoft.studio.unit.leftMargin" value="pixel"/>
<property name="com.jaspersoft.studio.unit.rightMargin" value="pixel"/>
<property name="com.jaspersoft.studio.unit.columnWidth" value="pixel"/>
<property name="com.jaspersoft.studio.unit.columnSpacing" value="pixel"/>
<parameter name="P_LOCATIONDETAILS_SUBREPORT" class="java.lang.Object"/>
<queryString>
    <![CDATA[]]>
</queryString>
<field name="locationNumber" class="java.lang.Integer">
    <fieldDescription><![CDATA[locationNumber]]></fieldDescription>
</field>
<field name="items" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource">
    <fieldDescription><![CDATA[items]]></fieldDescription>
</field>
<background>
    <band splitType="Stretch"/>
</background>
<detail>
    <band height="60" splitType="Prevent">
        <property name="com.jaspersoft.studio.layout"/>
        <property name="com.jaspersoft.studio.unit.height" value="px"/>
        <textField>
            <reportElement x="0" y="0" width="245" height="18" uuid="c50227b8-a283-40ef-a135-7b2146e1028f">
                <property name="com.jaspersoft.studio.unit.height" value="px"/>
            </reportElement>
            <box>
                <topPen lineWidth="1.0"/>
                <leftPen lineWidth="1.0"/>
                <bottomPen lineWidth="1.0"/>
                <rightPen lineWidth="1.0"/>
            </box>
            <textElement textAlignment="Center">
                <font size="12" isBold="true"/>
            </textElement>
            <textFieldExpression><![CDATA["Location " + $F{locationNumber}]]></textFieldExpression>
        </textField>
        <subreport>
            <reportElement x="0" y="17" width="245" height="33" uuid="844fee11-3a26-45d9-9016-45de28e366a0"/>
            <dataSourceExpression><![CDATA[$F{items}]]></dataSourceExpression>
            <subreportExpression><![CDATA[$P{P_LOCATIONDETAILS_SUBREPORT}]]></subreportExpression>
        </subreport>
        <textField>
            <reportElement x="0" y="0" width="245" height="18" uuid="c50227b8-a283-40ef-a135-7b2146e1028f"/>
            <textElement textAlignment="Center">
                <paragraph lineSpacing="1_1_2" lineSpacingSize="20.0" spacingBefore="6" spacingAfter="12"/>
            </textElement>
        </textField>
    </band>
</detail>
<pageFooter>
    <band height="5">
        <property name="com.jaspersoft.studio.unit.height" value="px"/>
    </band>
</pageFooter>

这会以这种方式打印我的项目

item1        item8

item2        item9

item3       

item4

item5

item6

item7

但是我想要这样的东西:

item1        item6

item2        item7

item3        item8

item4        item9

item5

是否有可能不做两个子报表并传递两个不同的列表(之前以编程方式计算)? 另一件事是:项目列表大小不固定:可能是1到n个项目。

0 个答案:

没有答案