如何正确拉伸溢出非细节带

时间:2014-06-27 07:01:51

标签: jasper-reports

我的标题和页眉中的字段有多行。我希望它们垂直拉伸,但问题是拉伸场下方的区域缺失。我还使用框架对它们进行分组。

我设置的属性:

Position Type : Float
Stretch Type : Relative to Tallest Object
Stretch With Overflow : True

请参阅下面的截图。 enter image description here

3 个答案:

答案 0 :(得分:10)

您可以尝试这些文字属性: -

对于标题带的第一个字段(出纳员名称),请使用以下属性: -

Position Type-         Fix Relative to Top

Stretch Type-          Relative to Band Height

Stretch With Overflow -    true

对于第二个字段(日期),设置这些属性

Position Type-         Fix Relative to Bottom

Stretch Type-          No stretch

Stretch With Overflow-     false

在此报告中,如果在ireport中使用Sample HSQL数据库运行报告,则可以看到属性: -

<?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="ward utilization" pageWidth="300" pageHeight="300" orientation="Landscape" columnWidth="280" leftMargin="10" rightMargin="10" topMargin="10" bottomMargin="10" uuid="85476864-df43-454c-83dd-9c1b475ec223">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString>
    <![CDATA[select * from orders]]>
</queryString>
<field name="ORDERID" class="java.lang.Integer"/>
<field name="CUSTOMERID" class="java.lang.String"/>
<field name="EMPLOYEEID" class="java.lang.Integer"/>
<field name="ORDERDATE" class="java.sql.Timestamp"/>
<field name="REQUIREDDATE" class="java.sql.Timestamp"/>
<field name="SHIPPEDDATE" class="java.sql.Timestamp"/>
<field name="SHIPVIA" class="java.lang.Integer"/>
<field name="FREIGHT" class="java.math.BigDecimal"/>
<field name="SHIPNAME" class="java.lang.String"/>
<field name="SHIPADDRESS" class="java.lang.String"/>
<field name="SHIPCITY" class="java.lang.String"/>
<field name="SHIPREGION" class="java.lang.String"/>
<field name="SHIPPOSTALCODE" class="java.lang.String"/>
<field name="SHIPCOUNTRY" class="java.lang.String"/>
<group name="bed"/>
<title>
    <band height="42">
        <textField isStretchWithOverflow="true">
            <reportElement uuid="c438eefe-5415-409e-8e7c-c763a7305ae2" stretchType="RelativeToBandHeight" x="87" y="0" width="24" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{SHIPNAME}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement uuid="83c8a0d7-af5f-43ec-88dd-7d923a5b2a28" positionType="FixRelativeToBottom" x="87" y="21" width="24" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{SHIPCITY}]]></textFieldExpression>
        </textField>
    </band>
</title>

答案 1 :(得分:3)

我在这里看到两种可能的解决方案。

  1. 根据再现错误的测试,您可以将日期字段设置为浮点数,并且当前一个标签(收银员名称)溢出时它将向下移动。不幸的是,这是解决方案的一部分,因为现场日期与其标签不一致。

  2. 创建一个表并将这些标签和字段设置为表,让它自然地处理溢出。我没有使用数据源测试它,但我确信你可以将它传递给当前报告的数据源并从中获取所需数据并在该表上显示该信息。

  3. 让我知道它是否适合你。另外,告诉我你还尝试了什么。我现在很好奇:)

    祝你好运。

答案 2 :(得分:3)

拉伸类型:相对于最高对象使任何项目的垂直大小为所有项目中的最大值。在这种情况下,前一个元素与下一个(缺失)项重叠。

这不是必需的。设置拉伸类型=&#34;无拉伸&#34;。 &#34;拉伸溢出=真&#34;足以显示正确的显示项目。 (IMHO)

解决方案:将每对标签:字段放入单独的框架中。在这种情况下,标签字段将显示在相应的行