细节带高度不动态调整

时间:2018-03-22 19:13:36

标签: jasper-reports

我对Jasperreports(使用Jasper Studio Pro 6.4.2)作为设计师有一个奇怪的问题。

我有一个非常简单的例子,显示细节带没有动态调整其高度以适应文本字段" s" stretch"属性。

关于文本字段的设置,我有以下

  • isStretchWithOverflow ="真"
  • positionType ="浮动"
  • stretchType =" RelativeToTallestObject"

细节带有以下设置:

  • 分体式="拉伸"

报告的完整代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.4.2.final using JasperReports 
Library version 6.4.1  -->
<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="NSXGroupMemberServers" columnCount="4" printOrder="Horizontal" pageWidth="461" pageHeight="792" columnWidth="115" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" isFloatColumnFooter="true" uuid="f155815a-db1d-4ada-a8e6-b753eec591d1">
    <property name="com.jaspersoft.studio.data.sql.tables" value=""/>
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="NSX Rules"/>
    <property name="com.jaspersoft.studio.unit." value="pixel"/>
    <parameter name="GroupID" class="java.lang.Integer"/>
    <queryString language="SQL">
        <![CDATA[Select ServerName from ServerInventoryTable SIT
Inner Join
ServerToGroupTable SGT on SIT.ServerID = SGT.ServerID
Inner Join GroupTable GT on SGT.GroupID = GT.GroupID
Where GT.GroupID =  $P{GroupID} ]]>
    </queryString>
    <field name="ServerName" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <detail>
        <band height="20" splitType="Stretch">
            <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/>
            <textField isStretchWithOverflow="true">
                <reportElement positionType="Float" stretchType="RelativeToTallestObject" mode="Transparent" x="0" y="0" width="25" height="20" backcolor="#F2F0F0" uuid="bc85ea8a-bc71-483a-994a-a5facfbd752b">
                    <property name="com.jaspersoft.studio.unit.x" value="pixel"/>
                    <property name="com.jaspersoft.studio.unit.y" value="pixel"/>
                    <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                    <property name="com.jaspersoft.studio.unit.height" value="pixel"/>
                </reportElement>
                <box leftPadding="0">
                    <topPen lineWidth="0.0"/>
                    <leftPen lineWidth="1.0"/>
                    <bottomPen lineWidth="0.0"/>
                    <rightPen lineWidth="1.0"/>
                </box>
                <textElement verticalAlignment="Top">
                    <font size="8"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{ServerName}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

我认为这个问题存在于细节带行为中,因为作为故障排除的一部分,我将字段设置为异常短(如上所示,只有25px宽度字段)。如果我手动设置细节带高度为100px,我可以看到文本字段垂直增长(运行报告时)以容纳文本,因此文本字段(至少对我而言)似乎正在正常运行。

有人知道我在这里遗失了什么吗?我已经针对众多帖子检查了我的设置,例如[Stretch with overflow Detail band未按预期工作 Stretch with overflow Detail band not working as expected

非常感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:2)

报告中的详细信息区域不会延伸,因为报告具有水平填充顺序(printOrder="Horizontal")。

引自the documentation

  

水平填充报表模板时,内部包含动态文本字段   细节部分不会延伸到整个文本内容,   因为这可能会导致水平轴上的错位   后续细节部分。

如果需要使用拉伸元素进行水平填充,则可以使用列表组件而不是报告带。具有水平打印顺序的列表允许内容拉伸和对齐。您可以看到示例here

将报表转换为使用列表组件涉及创建子数据集并将查询移动到数据集。列表组件可以放在报告标题或摘要带中。

相关问题