3

データソースに Bean オブジェクトを使用しています。データ ソースにはいくつかのプロパティが含まれています。そのうちの 1 つは、使用しようとしている項目のリストです。ビーンは次のようになります。

String name;
String address;
List<DetailRecord> records;

レポートの詳細行としてレコードを表示したいと考えています。サブレポートを設定する必要があることはわかっていますが、現在の親データ項目のレコード要素をデータソースとして使用するようにサブレポートを設定する方法がわかりません。

4

2 に答える 2

6

わかりました。私は自分が何をする必要があるかを理解しました。サブレポートの場合、次のようにデータソースを指定する必要があります。

 new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{records})

ここにいくつかの「ゴッチャ」があり、私はしばらくの間立ち往生していました。

  • フルクラス名を使用する必要があります(JRBeanCollectionDataSourceのみを使用)は機能しません
  • メインレポートでは、レコードのタイプをjava.util.list(または適切なクラス)に設定する必要があります。

親のレコードフィールドがデフォルトで文字列に設定されていたため、私の試みは(目に見えるエラーなしで)爆撃を続けました。リストに変更すると、動作し始めました。

于 2012-11-07T16:39:14.857 に答える
1

別の解決策、それは誰かを助けるかもしれません:)。

  1. サブレポート セットのマスター レポートから - データソース式を使用します。

  2. - new MySubRepClass($F{list}.get(counter)) のようなデータソース式セット。

  3. MySubRepClass は、サブレポート (データソース Bean のように設定) の Bean データ ソースであるクラスであり、リスト (マスター レポートのプロパティ) にはそのインスタンスが含まれます。

  4. MySubRepClass は JRDataSource を実装する必要があります

グルック!

于 2013-06-03T12:18:21.850 に答える