【问题标题】:height of the list component at ireportireport 中列表组件的高度
【发布时间】:2018-03-09 08:38:06
【问题描述】:

我的报表中有一个列表组件,它显示一组数据。它的高度在运行时根据 Set(JRBeanCollectionDataSource) 的大小确定。我想创建一个高度与列表相同的矩形。我怎样才能做到这一点?谢谢。

更新:

更新 2:ireport 外观

<frame>
                <reportElement x="0" y="127" width="502" height="548"/>
                <frame>
                    <reportElement x="21" y="0" width="460" height="180"/>
                    <componentElement>
                        <reportElement x="203" y="0" width="257" height="55"/>
                        <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="dataset1">
                                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{inventors})]]></dataSourceExpression>
                            </datasetRun>
                            <jr:listContents height="55" width="257">
                                <textField isStretchWithOverflow="true">
                                    <reportElement x="50" y="0" width="47" height="18"/>
                                    <textElement>
                                        <font pdfEncoding="Cp1254"/>
                                    </textElement>
                                    <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
                                </textField>
                                <textField isStretchWithOverflow="true">
                                    <reportElement x="97" y="0" width="100" height="18"/>
                                    <textElement/>
                                    <textFieldExpression><![CDATA[$F{surname}]]></textFieldExpression>
                                </textField>
                                <textField isStretchWithOverflow="true">
                                    <reportElement x="72" y="18" width="100" height="18"/>
                                    <textElement/>
                                    <textFieldExpression><![CDATA[$F{department}]]></textFieldExpression>
                                </textField>
                                <textField isStretchWithOverflow="true">
                                    <reportElement x="61" y="36" width="100" height="18"/>
                                    <textElement/>
                                    <textFieldExpression><![CDATA[$F{appellation}]]></textFieldExpression>
                                </textField>
                                <line>
                                    <reportElement x="0" y="54" width="256" height="1"/>
                                </line>
                                <line>
                                    <reportElement x="0" y="0" width="1" height="54"/>
                                </line>
                                <line direction="BottomUp">
                                    <reportElement x="256" y="0" width="1" height="54"/>
                                </line>
                            </jr:listContents>
                        </jr:list>
                    </componentElement>
                    <rectangle>
                        <reportElement stretchType="RelativeToTallestObject" x="61" y="0" width="142" height="164"/>
                    </rectangle>
                    <staticText>
                        <reportElement x="73" y="7" width="119" height="63"/>
                        <textElement>
                            <font size="12" isBold="true" pdfEncoding="Cp1254"/>
                        </textElement>
                        <text><![CDATA[Buluş Bildiren Çalışan’ın Adı/Soyadı/Bölümü/Görevi]]></text>
                    </staticText>
                    <rectangle>
                        <reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="61" height="164"/>
                    </rectangle>
                    <staticText>
                        <reportElement x="10" y="7" width="40" height="139"/>
                        <textElement rotation="Left">
                            <font size="10" isBold="true" pdfEncoding="Cp1254"/>
                        </textElement>
                        <text><![CDATA[BULUŞ BİLDİREN ÇALIŞANLARLA  İLGİLİ BİLGİLER]]></text>
                    </staticText>
                </frame>
                <staticText>
                    <reportElement x="21" y="180" width="459" height="139"/>
                    <textElement markup="none">
                        <font pdfEncoding="Cp1254"/>
                    </textElement>
                    <text><![CDATA[Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.]]></text>
                </staticText>
                                </frame>

【问题讨论】:

  • 这是一个列表组件的边框还是一个独立的矩形?
  • 它是一个独立的矩形。

标签: java jasper-reports ireport


【解决方案1】:

您可以将List 元素和Rectangle 放入Frame 容器中。

样本:

<detail>
    <band height="20" splitType="Stretch">
        <textField>
            <reportElement x="0" y="0" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{ADDRESS_FIRSTNAME}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="100" y="0" width="100" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{ADDRESS_CITY}]]></textFieldExpression>
        </textField>
        <frame>
            <reportElement x="200" y="0" width="324" height="20"/>
            <componentElement>
                <reportElement x="0" y="0" width="155" height="20"/>
                <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="dataset1">
                        <datasetParameter name="addressId">
                            <datasetParameterExpression><![CDATA[$F{ADDRESS_ID}]]></datasetParameterExpression>
                        </datasetParameter>
                        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    </datasetRun>
                    <jr:listContents height="20" width="155">
                        <textField isStretchWithOverflow="true">
                            <reportElement x="0" y="0" width="62" height="20"/>
                            <textElement/>
                            <textFieldExpression><![CDATA["Total docs: " + $F{DOCUMENT_TOTAL}]]></textFieldExpression>
                        </textField>
                    </jr:listContents>
                </jr:list>
            </componentElement>
            <rectangle>
                <reportElement stretchType="RelativeToTallestObject" x="155" y="0" width="100" height="20"/>
            </rectangle>
        </frame>
    </band>
</detail>

您应该将 rectanglestretchType 属性设置为 RelativeToTallestObject 并设置 textField 的(位于列表中) isStretchWithOverflow 属性为 true

结果将是:

【讨论】:

  • 谢谢亚历克斯它的工作原理..现在的问题是,我如何校准列表正下方的字段/矩形的位置?因为当列表很短时,之间存在差距它们,当列表很长时,它会溢出到下面的字段/矩形。
  • 能否添加图片以便更好地了解您的问题。也许您应该创建一个新问题?
  • 实际上我没有创建一个新问题,因为问题仍然是关于 ireport 列表组件的高度。我在问题中添加了一张图片,以便您更好地理解问题。当人员列表有1 或 2 个元素列表和 loreen ipsum 文本之间存在间隙,当它有 3 个元素时,一切都很好,当它有超过 3 个元素时(如图所示),列表溢出到它下面的文本。
  • 长文本字段是否在列表下方?您能否发布您的报告模板的屏幕截图(它在 iReport 中的外观)?
  • 是的,静态文本在列表下方。我添加了 ireport 外观截图。谢谢
【解决方案2】:

你也可以试试这些属性,

<staticText positionType="Float" stretchType="RelativeToTallestObject">
   <reportElement x="21" y="180" width="459" height="139"/>
      <textElement markup="none">
          <font pdfEncoding="Cp1254"/>
      </textElement>
   <text><![CDATA[Lorem Ipsum ....]]></text>
</staticText>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多