首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JasperReport:<jr:listContents>元素之间的意外空白

JasperReport:<jr:listContents>元素之间的意外空白
EN

Stack Overflow用户
提问于 2022-11-16 01:22:32
回答 1查看 37关注 0票数 0

在这件事上遇到了很大的障碍。我有一个主报表,它加载一个子报表。所述子报表包含嵌套列表,其内部列表在元素之间呈现一些意外的空白。空白处的大小是一致的,这几乎就像是报告呈现了一个“幽灵”元素。

供参考的相关jrxml:

代码语言:javascript
运行
复制
<subDataset name="SurveyListDataSet">
  <property name="com.jaspersoft.studio.data.defaultdataadapter" />
  <queryString><![CDATA[]]></queryString>
  <field name="surveyDate" class="java.lang.String"/>
  <field name="surveyList" class="java.util.List"/>
</subDataset>
<subDataset name="SurveyDataSet">
  <property name="com.jaspersoft.studio.data.defaultdataadapter" />
  <queryString><![CDATA[]]></queryString>
  <field name="question" class="java.lang.String"/>
  <field name="response" class="java.lang.String"/>
</subDataset>

<field name="surveyDataList" class="java.util.List"/>

<detail>
  <band height="17" splitType="Stretch">
    <componentElement>
      <reportElement x="0" y="0" width="505" height="17" isRemoveLineWhenBlank="true" />
      <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
        <datasetRun subDataset="SurveyListDataSet">
          <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{surveyDataList})]]></dataSourceExpression>
        </datasetRun>
        <jr:listContents height="17" width="505">
          <textField isStretchWithOverflow="true">
            <reportElement style="report_value_bold" x="110" y="0" width="265" height="15" />
            <textElement textAlignment="Left" />
            <textFieldExpression><![CDATA[$F{surveyDate}]]></textFieldExpression>
          </textField>
          <line>
            <reportElement style="line_light" x="105" y="16" width="400" height="1"/>
          </line>
          <componentElement>
            <reportElement x="0" y="0" width="505" height="0" isRemoveLineWhenBlank="true" positionType="Float"/>
            <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
              <datasetRun subDataset="SurveyDataSet">
                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{surveyList})]]></dataSourceExpression>
              </datasetRun>
              <jr:listContents height="34" width="505">
                <textField isStretchWithOverflow="true">
                  <reportElement style="report_value" x="125" y="17" width="265" height="15" positionType="Float" />
                  <textElement textAlignment="Left" />
                  <textFieldExpression><![CDATA[$F{question}]]></textFieldExpression>
                </textField>
                <textField isStretchWithOverflow="true">
                  <reportElement style="report_value_bold" x="300" y="17" width="195" height="15" isRemoveLineWhenBlank="true" positionType="Float" />
                  <textElement textAlignment="Right" />
                  <textFieldExpression><![CDATA[$F{response}]]></textFieldExpression>
                </textField>
                <line>
                  <reportElement style="line_light" x="105" y="33" width="400" height="1" positionType="FixRelativeToBottom" />
                </line>
              </jr:listContents>
            </jr:list>
          </componentElement>
        </jr:listContents>
      </jr:list>
    </componentElement>
  </band>
</detail>

我看到的例子输出:

期望:每一个Q/A出现在它之上的Q/A线下面。在日期和上面的Q/A之间也不应该有任何差距。

我试过调整各种高度,postitionTypes等,但都没有用。感觉我可能错过了一些显而易见的东西,但我盯着这个看得太久了。感谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-16 02:19:34

您的最内部列表reportElement的高度设置为0 0px,而突然间,listContents高度设置为34 0px,但在细节带设置为17 0px时,只包含17 0px的TextElement。

使用Jasperreports中的列表的基本概念是,每个内部列表都必须在其包含的列表中分配垂直空间。也就是说,您最内部的列表必须在外部列表中分配空间,并相对于外部列表中的其他元素定位。如果TextElement由于isStretchWithOverflow="true"元素而被分散,则设置为positionType="Float"的列表中的元素将“浮动”下来,列表将扩展。如果内部列表扩展,外部列表也会自动扩展。(如果设置为positionType="Float",内部列表下面的外部列表中的元素将向下浮动。

我已经澄清了你的例子:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.20.0.final using JasperReports Library version 6.19.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="nbsp" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="77c97c1b-90ba-40a8-a5c3-f88b8a48a585">
    <subDataset name="SurveyListDataSet" uuid="da0fc5b7-7621-4907-b2b7-e8fa130b1945">
        <queryString>
            <![CDATA[]]>
        </queryString>
        <field name="_THIS" class="java.lang.String"/>
    </subDataset>
    <subDataset name="SurveyDataSet" uuid="e7a6a451-fe26-427c-917d-59070a76a200">
        <queryString>
            <![CDATA[]]>
        </queryString>
        <field name="_THIS" class="java.lang.String"/>
    </subDataset>
    <detail>
        <band height="34" splitType="Stretch">
            <property name="com.jaspersoft.studio.unit.height" value="px"/>
            <componentElement>
                <reportElement x="0" y="0" width="505" height="34" uuid="0d598531-c684-4c2b-be01-9ced3fa81f81">
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
                    <datasetRun subDataset="SurveyListDataSet" uuid="7eeeb416-bd57-43dc-bc19-47481921f2a7">
                        <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(java.util.Arrays.asList(new String[] { "2022-01-01", "2022-02-01", "2022-03-01", "2022-04-01" }))]]></dataSourceExpression>
                    </datasetRun>
                    <jr:listContents height="34" width="505">
                        <textField textAdjust="StretchHeight">
                            <reportElement x="110" y="0" width="265" height="15" uuid="c0bfd9da-139d-41a9-9b91-34c4db12ebe9"/>
                            <textElement textAlignment="Left"/>
                            <textFieldExpression><![CDATA[$F{_THIS}]]></textFieldExpression>
                        </textField>
                        <line>
                            <reportElement positionType="Float" x="105" y="16" width="400" height="1" uuid="d21b7ef6-f724-4ad9-a238-c68c28d486ab"/>
                        </line>
                        <componentElement>
                            <reportElement positionType="Float" x="0" y="17" width="505" height="17" uuid="54082666-799b-4117-92a5-255041315f7b">
                                <property name="com.jaspersoft.studio.unit.height" value="px"/>
                                <property name="com.jaspersoft.studio.unit.y" value="px"/>
                            </reportElement>
                            <jr:list printOrder="Vertical">
                                <datasetRun subDataset="SurveyDataSet" uuid="f955dac7-55df-4fc3-8e30-cdeefe73a5be">
                                    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(java.util.Arrays.asList(new String[] { "Question 1? ", "Question 2?", "Question 3?", "Question 4?" }))]]></dataSourceExpression>
                                </datasetRun>
                                <jr:listContents height="17" width="505">
                                    <textField textAdjust="StretchHeight">
                                        <reportElement x="125" y="0" width="265" height="15" uuid="c1fb3fef-53d7-4e64-b05a-0478aed19226">
                                            <property name="com.jaspersoft.studio.unit.y" value="px"/>
                                        </reportElement>
                                        <textElement textAlignment="Left"/>
                                        <textFieldExpression><![CDATA[$F{_THIS}]]></textFieldExpression>
                                    </textField>
                                    <textField textAdjust="StretchHeight">
                                        <reportElement x="300" y="0" width="195" height="15" isRemoveLineWhenBlank="true" uuid="4dd5da20-e70f-4122-92e9-fea714edb33a">
                                            <property name="com.jaspersoft.studio.unit.y" value="px"/>
                                        </reportElement>
                                        <textElement textAlignment="Right"/>
                                        <textFieldExpression><![CDATA[$F{_THIS}]]></textFieldExpression>
                                    </textField>
                                    <line>
                                        <reportElement positionType="Float" x="105" y="16" width="400" height="1" uuid="b2e07c02-8deb-49fb-9a68-9f431a9f363d">
                                            <property name="com.jaspersoft.studio.unit.height" value="px"/>
                                            <property name="com.jaspersoft.studio.unit.y" value="px"/>
                                        </reportElement>
                                    </line>
                                </jr:listContents>
                            </jr:list>
                        </componentElement>
                    </jr:listContents>
                </jr:list>
            </componentElement>
        </band>
    </detail>
</jasperReport>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74454075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档