Jasper reports Jasper报告:页面底部的定位元素

Jasper reports Jasper报告:页面底部的定位元素,jasper-reports,Jasper Reports,我想知道是否有可能将动态增长的(表)元素放在页面底部?“我的表格”元素位于“细节”栏上,就在页脚栏的上方 基本上,在我的例子中,表中最上面一行的位置将根据表中的行数一直动态变化。但我不确定是否可以用Jasper创建这种演示文稿,因为Jasper的表格基本上是从下到上“增长”的,表格的最后一行基本上固定在页面底部,就在页脚上方。如果表格最上面一行的位置总是固定的,并且表格从固定的顶部位置向页面底部“正常增长”,那么就没有问题了 我尝试将表的position-type属性设置为Fix-relativ

我想知道是否有可能将动态增长的(表)元素放在页面底部?“我的表格”元素位于“细节”栏上,就在页脚栏的上方

基本上,在我的例子中,表中最上面一行的位置将根据表中的行数一直动态变化。但我不确定是否可以用Jasper创建这种演示文稿,因为Jasper的表格基本上是从下到上“增长”的,表格的最后一行基本上固定在页面底部,就在页脚上方。如果表格最上面一行的位置总是固定的,并且表格从固定的顶部位置向页面底部“正常增长”,那么就没有问题了


我尝试将表的position-type属性设置为Fix-relative-to-bottom,但之后整个表就完全消失了。这是迄今为止我唯一能想到的解决我的问题的方法。

也许实现这一点的最简单方法是将您的表放在
中,使用
footerPosition=“StackAtBottom”

正确的分组方式取决于数据源,但假设只有一个表创建了一个虚拟组

第页的表StackAtBottom的虚拟组的示例

<?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="Example2" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ca579c38-1e4f-4993-a020-efcea9d1096e">
<style name="table"><box><pen lineWidth="1.0" lineColor="#000000"/></box></style>
<style name="table_TD" mode="Opaque" backcolor="#FFFFFF"><box><pen lineWidth="0.5" lineColor="#000000"/></box></style>
<subDataset name="Table" uuid="982be61b-ae46-4404-a9a0-30ba13e8c414">
    <queryString language="xPath">
        <![CDATA[/report/table/entry]]>
    </queryString>
    <field name="name" class="java.lang.String">
        <fieldDescription><![CDATA[name]]></fieldDescription>
    </field>
    <field name="class" class="java.lang.String">
        <fieldDescription><![CDATA[class]]></fieldDescription>
    </field>
</subDataset>
<queryString language="xPath">
    <![CDATA[/report]]>
</queryString>
<group name="dummy" footerPosition="StackAtBottom">
    <groupFooter>
        <band height="29">
            <componentElement>
                <reportElement key="table" style="table" x="0" y="0" width="360" height="20" uuid="53ea5a0e-1218-4150-ab5a-5f947e73b284"/>
                <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
                    <datasetRun subDataset="Table" uuid="64092841-9993-4ccd-89b4-84a546c719cf">
                        <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("report/table/entry")]]></dataSourceExpression>
                    </datasetRun>
                    <jr:column width="90" uuid="4f5b1813-a9cc-4f83-9bdb-b0d8c4299133">
                        <jr:detailCell style="table_TD" height="20">
                            <textField>
                                <reportElement x="0" y="0" width="90" height="20" uuid="f1a97e19-e23d-40b6-ad95-10614f516db7"/>
                                <textFieldExpression><![CDATA[$F{class}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="90" uuid="98cfbe63-f865-419c-ad8f-d8af2ed706ba">
                        <jr:detailCell style="table_TD" height="20">
                            <textField>
                                <reportElement x="0" y="0" width="90" height="20" uuid="0480f047-02ba-4ec4-b12a-ef56a3cbfee9"/>
                                <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                </jr:table>
            </componentElement>
        </band>
    </groupFooter>
</group>
<detail>
    <band height="17" splitType="Stretch"/>
</detail>
</jasperReport>

结果


您的表格是否在详细信息栏中?是否需要在详细信息栏中?(你们有多张桌子吗?)。根据这一点,解决方案有所不同……是的,我的表格(以及表格上方的两个文本字段)位于详细信息栏。我在这一页上只有一张桌子。此详细信息栏上方还有另一个详细信息栏,包含表格,但它不包含表格,只包含文本字段。我想我的表格也可以放在其他的波段上,但我不认为重构到另一个波段可以帮助我将表格的最后一行固定在页面底部(就在页脚上方)。但也许有一个解决办法…我贴了一个。。。试试看……我试过上面的例子,但似乎jrxml行与我的乐队不兼容:jasper studio将这些行指示为erroneus,如果我尝试保存修改后的jrxml,它会自动丢弃我添加的内容。基本上,我只是在我的第二个细节栏周围添加了以下几行:。我的数据源是一个bean集合。该组在主报告中跟踪您的查询字符串。。。在你所有的细节栏之前。。我已经编辑了答案,所以你可以看到乐队的走向…谢谢,我会试试的。出于好奇,jasper如何理解将完全在实际细节带之外定义的组定位在正确的细节带中,因为我有很多(两)个这样的细节带。从上面的代码中,我看不到顶部的组定义与正确的详细信息栏之间的链接…您也可以在studio中创建,右键单击报表节点,选择添加组。。通过在groupExpression中不包含任何内容来创建虚拟组(其在报告中执行一次),每个组都可以有一个groupHeader和groupFooter(在本例中删除groupHeader),并选择groupFooter to StackAtBottom此虚拟组将在您的详细信息栏之后执行,如果您需要在此之后的详细信息(您需要循环其他记录),您需要开始使用子报表。如果你有另一个表考虑使用总结乐队…基本上,所有不同的波段,你试图适合你的报告内容在正确的波段。。。要实现您想要的布局。。。就我个人而言,我讨厌表组件,我总是使用子报表……)