【问题标题】:Can a textField in subreport with "Stretch with overflow" span across multiple pages?子报表中带有“溢出溢出”的文本字段可以跨多个页面吗?
【发布时间】:2016-02-26 22:15:22
【问题描述】:

我有一个只有一个文本字段的子报表。此文本字段可以包含从服务中检索到的大约 5000 个字符。

我的目标是在父报表上显示此子报表。它应该从我将它以连续方式放置到多个页面的“浮动”位置开始。

当我的父报表中有此子报表时,文本剪辑子报表中的文本字段“溢出溢出”设置为 false。 当我将 "Stretch with overflow" 设置为 true 时,页面上的 文本字段显示为空白,但会占用父报表上所需的空间。

我尝试了以下方法,但似乎没有任何效果:

1.在子报告中:

  • 当细节溢出 = true 时打印
  • 拆分类型 = “拉伸”
  • 忽略分页 = true

2。主要报告:

  • 拆分类型 = “拉伸”
  • 当子报表对象的细节溢出 = true 时打印
  • 在第一个全波段打印 = true

几天以来的尝试让我觉得不可能有跨页的文本字段溢出。

请让我知道是否有可能有一个包含跨多个页面的文本字段的子报表。

【问题讨论】:

    标签: jasper-reports subreport


    【解决方案1】:

    “甚至可以让一个带有文本字段的子报表跨越多个页面?”

    是的,我在下面附上一个例子

    主要报告

    <?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="stretchTest" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="BlankPage" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="6c8cebac-a7b5-4dc2-abe8-e36b0cb184ca">
        <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
            <defaultValueExpression><![CDATA["C:\\jdd\\projects\\StackTrace\\jasper\\"]]></defaultValueExpression>
        </parameter>
        <detail>
            <band height="20" splitType="Stretch">
                <subreport>
                    <reportElement x="0" y="0" width="100" height="20" uuid="778b107f-288e-4f17-915d-fed6f83a2805"/>
                    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(2)]]></dataSourceExpression>
                    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "stretchTest_subreport.jasper"]]></subreportExpression>
                </subreport>
            </band>
        </detail>
    </jasperReport>
    

    子报告

    <?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="stretchTest_subreport" pageWidth="100" pageHeight="555" orientation="Landscape" columnWidth="100" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="f716e850-ab6f-4668-b3a1-afe4823b8abf">
        <property name="ireport.zoom" value="1.0"/>
        <property name="ireport.x" value="0"/>
        <property name="ireport.y" value="0"/>
        <parameter name="veryLongTextThatNeedToBreak" class="java.lang.String" isForPrompting="false">
            <defaultValueExpression><![CDATA["I have a subreport with just one text field. This text field can have somewhere around 5000 characters retrieved from a service. My goal is to show this subreport on the parent report.(it should start from the Float position where I place it to multiple pages in a continuous manner). When I have this subreport in my parent report, the text clips when the Stretch with overflow of the text field in subreport is set to false. When I set Stretch with overflow to true, the text field appears blank on the pages but takes up the required space on the parent report. I have tried the following but nothing seem to work:1. In the sub report: Set the Print when detail overflow = true Set Split Type = Stretch Ignore pagination = true 2. Main report: Set Split Type = Stretch Set Print when detail overflow = true of subreport object Print in first whole band = true Trying it since few days has made me feel that it is impossible to have a overflowing text field across pages. Please let me know if its even possible to have a subreport with text field to span across multiple pages. Thanks in advance!!"]]></defaultValueExpression>
        </parameter>
        <detail>
            <band height="20" splitType="Stretch">
                <textField isStretchWithOverflow="true">
                    <reportElement x="0" y="0" width="100" height="20" uuid="4f14a231-dd62-465b-b10a-fa39f9c6a297"/>
                    <textFieldExpression><![CDATA[$P{veryLongTextThatNeedToBreak}]]></textFieldExpression>
                </textField>
            </band>
        </detail>
    </jasperReport>
    

    编译子报表,设置正确的子报表路径并测试你自己。

    注意:我没有在reportElements 上设置很多属性。

    输出

    【讨论】:

    • 如果将来对任何人有帮助,就写这个。我为子报表和子报表中的元素设置了太多属性。要设置的确切属性集如下: 父报告: 1. 带分割类型 = 拉伸。 2. 子报表元素,拉伸类型 = 无拉伸子报表: 1. 对于文本字段,拉伸溢出 = true。 2. 拉伸类型 = 无拉伸 3. 带,分体类型 = 拉伸
    • 是的,我正在想象这个,你陷入混乱,当你试图离开时你会更加混乱,这就是为什么我发布了一个简单的例子(试图打破你有疑问的地方。 .. :) 感谢您的接受..
    猜你喜欢
    • 2011-11-18
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 2017-12-15
    • 1970-01-01
    相关资源
    最近更新 更多