2011-11-23 21 views
0

我的報表中有一個列表組件,它顯示一組數據。它的高度是在運行時根據Set(JRBeanCollectionDataSource)的大小確定的。我想創建一個矩形的高度與列表相同。我該如何做?謝謝。ireport列表組件的高度

更新:enter image description here

更新2:iREPORT分享到人人看 enter image description here

<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> 
+0

這是一個List組件的邊框或者這是一個獨立的長方形? –

+0

它是一個獨立的矩形。 – sogukk

回答

3

你可以把List元素和RectangleFrame容器。

樣本:

<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> 

您應該設置stretchType屬性矩形RelativeToTallestObject並設置文本框的(趴在列表)isStretchWithOverflow財產true

結果將是:

enter image description here

+0

謝謝亞歷克斯它的工作..現在的問題是,我如何校準正好在列表下方的字段/矩形的位置?因爲當列表很短時,它們之間存在間隙,並且當列表很長,它溢出到下面的字段/矩形。 – sogukk

+0

請問您是否可以添加圖片以更好地理解您的問題。可能你應該創建一個新的問題? –

+0

實際上我沒有創建一個新的問題,因爲問題仍然是關於ireport.I列表組件的高度問題。我爲問題添加了一個圖像,以便您更好地理解問題。當人員列表中有1或2個元素時,當它有3個元素時,所有內容都是正常的,當它有超過3個元素(如在圖像中)列表溢出到它下面的文本時,列表和文本之間的差距。 – sogukk

1

您還可以使用這些屬性嘗試,

<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> 

enter image description here