Я пытаюсь найти способ разбить отчет на две колонки, расположенные вертикально и имеющие одинаковую высоту. Можно ли обойтись без разделения данных на два подотчета?
У меня есть страница, где у меня есть заголовок, заголовок столбца и сводка.
В заголовке столбца у меня есть подотчет 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 элементов.