我想水平显示元素(在一个“行”中)。我在想像这个问题,就像一张有一行和动态列数的表。该表中的每个单元格包含相同的子报表,但具有不同的数据源。

在开始时,我尝试将组件列表和子报表组合在一起。但事实证明,列表组件不支持水平布局。我在某处阅读以使用交叉表。但是,当我尝试将子报表插入度量单元时,iReport会显示一条消息,提示我无法执行此操作。那我该怎么办?

最佳答案

根据您的上述评论,我想说,水平打印元素列表并不难。列表组件基本上是一个子报表。因此,您还可以创建一个自定义List组件,该组件将水平打印元素列表。您所需要做的就是创建一个没有任何边距的新报表,将其“打印顺序”设置为“水平”,并根据需要设置列数。然后,您可以将此报告作为子报告嵌入到一些主报告中,并水平打印元素。

根据您的要求,您可以相应地设置报告和文本字段的大小。这是我创建的报告的屏幕截图:



这是我创建的样本jrxml文档:

<?xml version="1.0" encoding="UTF-8"?>
<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="report name" columnCount="5" printOrder="Horizontal" pageWidth="595" pageHeight="842" columnWidth="119" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band splitType="Stretch"/>
    </title>
    <pageHeader>
        <band splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="20" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="100" height="20"/>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{field}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band splitType="Stretch"/>
    </summary>
</jasperReport>

07-24 19:27
查看更多