2017-04-26 81 views
0

在我的JasperReport報告中,只顯示我的集合的第一行。這是相關的代碼。列表組件僅顯示第一行

實體

public class LegendEntity implements Serializable{ 

    private String label; 
    private Image bufferedImage; 

    public LegendEntity() { 
    } 

    public LegendEntity(String label) { 
     this.label = label; 
    } 

    public LegendEntity(String label,Image bufferedImage) { 
     this.label = label; 
     this.bufferedImage = bufferedImage; 
    } 

    //getters-setters 

準備數據源:

List<MyEntity> myEntitiesList = new ArrayList<>(); 
//filling the list 
JRBeanCollectionDataSource entityDS= new JRBeanCollectionDataSource(myEntitiesList ,false); 
report.getReportParameters().put("ENTITY_DATASOURCE", entityDS); 

的JRXML:

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport ... name="SampleReport" printOrder="Horizontal" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0"> 
    <subDataset name="LegendDataset" uuid="e0d72aca-6fd5-4935-b57f-ff5a436f2afb"> 
     <field name="label" class="java.lang.String"> 
      <fieldDescription><![CDATA[]]></fieldDescription> 
     </field> 
     <field name="bufferedImage" class="java.awt.Image"/> 
    </subDataset> 
    <parameter name="P_MAP_SCALE_STR" class="java.lang.String"/> 
    <parameter name="ENTITY_DATASOURCE" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/> 
    <detail> 
     <band height="842" splitType="Stretch"> 
      <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.FreeLayout"/> 
      <frame> 
       <reportElement x="298" y="635" width="298" height="206" uuid="e807b35a-857c-43ba-a080-13f422eb1456"/> 
       <componentElement> 
        <reportElement x="11" y="11" width="275" height="186" uuid="d6f579d3-75de-4745-8f94-c974d2e697a0"/> 
        <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="LegendDataset" uuid="ee194811-e7e5-4102-83ff-b150901d73c9"> 
          <dataSourceExpression><![CDATA[$P{ENTITY_DATASOURCE}]]></dataSourceExpression> 
         </datasetRun> 
         <jr:listContents height="186" width="275"> 
          <staticText> 
           <reportElement x="10" y="10" width="130" height="20" uuid="4260f10d-ee62-4cf6-8023-d0dc2266f4dd"/> 
           <textElement textAlignment="Center"/> 
           <text><![CDATA[ENTITY LABEL]]></text> 
          </staticText> 
          <staticText> 
           <reportElement x="150" y="10" width="100" height="20" uuid="88135c50-3c17-4b0f-b7e5-b05987f98b02"/> 
           <textElement textAlignment="Center"/> 
           <text><![CDATA[ENTITY SYMBOL]]></text> 
          </staticText> 
          <textField isStretchWithOverflow="true" isBlankWhenNull="true"> 
           <reportElement x="10" y="31" width="130" height="18" uuid="30885d06-38db-4b1c-a312-616a60ee1c42"/> 
           <textFieldExpression><![CDATA[$F{label}]]></textFieldExpression> 
          </textField> 
          <image> 
           <reportElement x="150" y="31" width="100" height="18" uuid="0020adca-acad-4915-9f0d-88d75e4897c7"/> 
           <imageExpression><![CDATA[$F{bufferedImage}]]></imageExpression> 
          </image> 
         </jr:listContents> 
        </jr:list> 
       </componentElement> 
      </frame> 
      <staticText> 
       <reportElement x="30" y="600" width="80" height="18" uuid="6c1afd65-a8d4-4e3f-9a56-d09abe7ec904"/> 
       <textElement textAlignment="Right"> 
        <font fontName="DejaVu Sans" size="9" isBold="true"/> 
       </textElement> 
       <text><![CDATA[Ölçek: 1/]]></text> 
      </staticText> 
      <textField> 
       <reportElement positionType="Float" x="110" y="600" width="100" height="18" uuid="6360a545-63af-48cc-987d-d828c24a3b2a"/> 
       <textElement> 
        <font fontName="DejaVu Sans" size="9" isBold="true"/> 
       </textElement> 
       <textFieldExpression><![CDATA[$P{P_MAP_SCALE_STR}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
</jasperReport> 

和報表上,只有第一個實體的標籤和符號顯示。我錯過了什麼?

調試已經完成,我確信1+實體出現在列表中。

整個JRXML here

+0

我將整個JRXML鏈接添加到最後。非常感謝你提前。 – patateskafa

+0

主要數據集呢?你通過什麼樣的數據源進行報告?相同的JRBeanCollectionDataSource或一行(其他)? –

+0

我正在向JasperFillManager傳遞「new JREmptyDataSource(1)」。 – patateskafa

回答

0

我注意到在您的主JRXML至少2個問題:

  1. 在報告級別可能妨礙正常的元素溢出設置printOrder="Horizontal"。嘗試恢復到printOrder="Vertical"或完全刪除屬性。
  2. 列表元素中有太多的空白空間會強制溢出。最後一個元素後面不應該有空格。