【问题标题】:JasperReports text field stretching - can stretch height be limited?JasperReports 文本字段拉伸 - 可以限制拉伸高度吗?
【发布时间】:2011-12-09 10:01:30
【问题描述】:

我在过去几天一直试图解决的 JasperReports 子报表遇到以下问题,但没有成功。下面是我正在尝试做的图片。

我的一份报告中有一个相对简单的子报告。它有一个带有单个文本字段(在图像中标记为棕色)用于子报表标题的标题带和一个包含两个项目的详细信息带:一个子报表(在图像中标记为蓝色)打印我的行项目和一个文本字段(在图像)打印与打印在其左侧的行项目相关联的 cmets。行项目子报表可以打印可变数量的行项目(由 bean 集合支持的数据源)。我的客户要求 cmets 字段可以拉伸并显示输入的文本,但受订单项部分高度的限制(由图像上的箭头表示)。我需要以某种方式防止 cmets 超出订单项并使它们具有相同的高度(图像中应该没有绿色框)。

有没有人有任何提示如何在 JasperReports 中实现(并且完全可以实现)?

附言 我们目前正在使用 JR 版本 3.6 编译我们的报告

【问题讨论】:

    标签: jasper-reports subreport


    【解决方案1】:

    将子报表和文本字段都放入一个框架中。对于文本字段,将 “Stretch with overflow” 设置为 false 并将 “Stretch type” 设置为 “相对于最高物体”

    文本字段将相对于其容器中最高的对象进行拉伸。它的容器现在是框架,所以“最高的物体”只能是子报表。确保元素在定义它们时具有相同的高度,否则它们将以不同的速率增长。

    JRXML 示例:

    <band height="50">
        <frame>
            <reportElement x="0" y="0" width="555" height="50"/>
            <subreport>
                <reportElement x="0" y="0" width="378" height="50"/>
                ...
            </subreport>
            <textField isStretchWithOverflow="false">
                <reportElement stretchType="RelativeToTallestObject" x="378" y="0" width="177" height="50"/>
                ...
            </textField>
        </frame> 
    </band>
    

    【讨论】:

    • 不幸的是,这并不能解决我的问题。如果我将注释文本字段 "Stretch with overflow" 设置为 false,则 cmets 不会填满整个框而只显示第一行。
    • 这很好奇。我自己检查了一下,果然,虽然盒子被正确拉伸了,但内容仍然限制在原来的大小。我认为这一定是 JR 的错误。
    猜你喜欢
    • 1970-01-01
    • 2014-10-14
    • 2022-12-05
    • 2013-11-11
    • 2011-09-15
    • 2023-03-25
    • 2010-11-07
    • 2011-07-02
    • 2014-03-10
    相关资源
    最近更新 更多