2011-10-27 3 views
1

リストコンポーネントをレポートに使用し、リスト/の後にさらにレポート要素があります。JasperReports:リストの伸縮動作

一覧の基になるコレクションは、1〜50レコードを含めることができますので、私はリストになるだろうどのように大規模なレポートの設計時にはわからないので、正確にこれらの次の要素をどこに置くか私にはわかりません。

私はちょうどテキストフィールドとして適切にリストストレッチを作るための方法を探していますが、isStretchWithOverflow属性がないリストため、テキストフィールドのためだけに定義されています。 現在のところ大きな番号リストリストは、次のレポート要素と重なっています。

の目的とするストレッチ動作は誰でも知っていますか?リスト、または私の問題を解決する方法はありますか?

P.S.私はJasperReports forumで、すでにこの質問にクロスポストが、何の答え:(

ここでは、コード例ではありません。

<detail> 
    <band height="200"> 
     <componentElement> 
      <reportElement x="0" y="10" width="500" height="100" stretchType="RelativeToBandHeight"/> 
      <c:list xmlns:c="http://jasperreports.sourceforge.net/jasperreports/components" 
        xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> 
       <datasetRun subDataset="airfreightRates"> 
        <dataSourceExpression>$F{spotAirfreightRates}</dataSourceExpression> 
       </datasetRun> 

       <c:listContents height="35"> 
        <textField isStretchWithOverflow="true" isBlankWhenNull="true"> 
         <reportElement x="0" y="0" width="70" height="15"/> 
         <box> 
          <pen lineWidth="1.0" lineColor="#000000"/> 
         </box> 
         <textElement verticalAlignment="Middle"> 
          <font fontName="Arial" size="10"/> 
         </textElement> 
         <textFieldExpression class="java.lang.String"> 
          "This is very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long textFieldExpression" 
         </textFieldExpression> 
        </textField> 
       </c:listContents> 
      </c:list> 
     </componentElement> 
     <staticText> 
      <reportElement x="0" y="30" width="500" height="50" positionType="Float" /> 
      <textElement isStyledText="true"/> 
      <text><![CDATA[<font color="#FF0000">Static text outside the list contents!!<b>The placement of the text is the crucial point!!!</b></font>]]></text> 
     </staticText> 
    </band> 
</detail> 
+0

結局、我々は顧客にJRと出荷iReportはを使用してのアイデアを放棄し、私たちのニーズに合った当社独自のデザイナーを実装 –

答えて

0

は、このサンプルのようにプロパティを設定してください:

<detail> 
    <band height="20" splitType="Stretch"> 
     <componentElement> 
      <reportElement stretchType="RelativeToTallestObject" x="186" y="0" width="57" 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="parameter1"> 
         <datasetParameterExpression><![CDATA[$F{PRODUCT_ID}]]></datasetParameterExpression> 
        </datasetParameter> 
        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression> 
       </datasetRun> 
       <jr:listContents height="20" width="57"> 
        <textField isStretchWithOverflow="true"> 
         <reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="41" height="10"/> 
         <textElement/> 
         <textFieldExpression><![CDATA[String.valueOf($F{POSITIONS_POSITIONNO}).concat("LONG STRING, very long string ")]]></textFieldExpression> 
        </textField> 
       </jr:listContents> 
      </jr:list> 
     </componentElement> 
     <textField isStretchWithOverflow="true"> 
      <reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="100" height="20"/> 
      <textElement/> 
      <textFieldExpression><![CDATA[$F{PRODUCT_ID}]]></textFieldExpression> 
     </textField> 
    </band> 
</detail> 

私が設定していますRelativeToTallestObjectプロパティList,TextField in Listおよびexternal TextFieldとセットisStretchWithOverflowexternal TextFieldです。

+0

今では同様の方法で私のために働きました。 リストに含まれるすべてのtextFieldにisStretchWithOverflow = "true"を設定しました。 テーブルに続く要素では、positionType = "Float"を設定して、リストに必要な追加のスペースに応じてフロートします。 私は以前にそれを正確に試したと確信していましたが、おそらく私は何か間違っていました... –

+0

アレックスの解決策は私のためには機能しません - 私の次の要素はサブレポートです。 –

+1

私がしなければならなかったのは、外部のTextField(テーブルに続く)がpositionType = "Float"を使用するように設定したことです。 – GaZ

0

リストをバックグラウンドに入れてみてください。

<background> 
    <band height="842" splitType="Prevent"> 
     <frame> 
      <reportElement uuid="9020735c-7a94-4807-9596-1aabac997a00" x="28" y="492" width="290" height="14"/> 
      <componentElement> 
       <reportElement uuid="4259289c-8858-4336-a37b-8ad5a7a1ba51" mode="Transparent" x="0" y="0" width="290" height="14"/> 
       <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" uuid="bf8de899-aa0b-43b4-9f4d-1e999524f66d"> 
         <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{inclusions})]]></dataSourceExpression> 
        </datasetRun> 
        <jr:listContents height="14" width="290"> 
         <textField isStretchWithOverflow="true"> 
          <reportElement uuid="f8997d71-b315-4be6-9bdf-c3d0c20d0424" positionType="Float" stretchType="RelativeToTallestObject" x="14" y="3" width="271" height="8" isPrintWhenDetailOverflows="true" forecolor="#4A4A49"/> 
          <textElement> 
           <font fontName="Avenir-Medium" size="11" isBold="false"/> 
           <paragraph lineSpacing="Proportional" lineSpacingSize="1.03"/> 
          </textElement> 
          <textFieldExpression><![CDATA[$F{inclusion}]]></textFieldExpression> 
         </textField> 
        </jr:listContents> 
       </jr:list> 
      </componentElement> 
     </frame> 
    </band>