JasperReports: два столбца одинаковой высоты, упорядоченные по вертикали - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь найти способ разбить отчет на две колонки, расположенные вертикально и имеющие одинаковую высоту. Можно ли обойтись без разделения данных на два подотчета?

У меня есть страница, где у меня есть заголовок, заголовок столбца и сводка.

В заголовке столбца у меня есть подотчет 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 элементов.

...