2017-04-26 9 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。私はあなたのメインのJRXML中に少なくとも2つの問題に気づいた

+0

最後にJRXMLリンク全体を追加しました。事前にどうもありがとうございました。 – patateskafa

+0

メインデータセットはどうですか?どのデータソースをレポートに渡しますか?同じJRBeanCollectionDataSourceまたは1行(何か他のもの)? –

+0

"新しいJREmptyDataSource(1)"をJasperFillManagerに渡しています。 – patateskafa

答えて

0

:レポートレベルでprintOrder="Horizontal"を設定

  1. は、適切な要素のオーバーフローを防ぐことができます。 printOrder="Vertical"に戻すか、属性を完全に削除してください。
  2. オーバーフローを強制する余分な空白がリスト要素内にあります。最後の要素の後に空白を入れてはいけません。
関連する問題