4

これが私が始めていることです。サブレポートを含むレポートがあります。このサブレポートがユニークなのは、サブレポート rdlc の XML が実行時に生成され、ストリームがレポート ビューアーに提供されることです。これは、データを必要な方法でレイアウトするためのほぼ唯一の方法でした。このレポート自体は正常に機能します。

今、私は複数のレポートを結合したいところです。リスト付きのレポートを作成しました。リスト内には、元のレポートを指すサブレポートがあります。しかし、動的サブレポートはリスト内のレポートごとに異なるストリームであるため、動的サブレポートを適用する方法を見つけようとして立ち往生しています。

この点に到達するために、元のレポートですでに多くの作業を行っているため、私のアプローチを再考したくありません.

これが私がこれまでに試したことです:

  1. リスト内の各レポートに対して SubreportProcessing イベントが呼び出されたときに、ストリームに対して LoadSubreportDefinition を呼び出します。レポートのレンダリングが始まる前にこれを行う必要があるため、これが機能しないと確信していますか?

  2. 一意の ID を使用して LoadSubreportDefinition を呼び出せるように、動的サブレポートの Name の式を指定する方法を考え出します。たとえば、Name は ="ImageSubreport" + Parameters!ID.Value のようになり、LoadSubreportDefinition("ImageSubreport1", stream1), LoadSubreportDefinition("ImageSubreport2", stream2) を呼び出します。これはデザイナーではできないように見えるので、可能ではないと思います。

各レポートを個別に生成してからマージする方法はありますか?

4

1 に答える 1

2

LoadReportDefinition を呼び出した直後に LoadSubReportDefinition を呼び出すだけです。

次のように、メイン レポートの定義がサブレポートを指しているとします。

<Subreport Name="Subreport1">
    <ReportName>MySubReport</ReportName>
    ...
</Subreport>

stream1メイン レポート RDLC を表しstream2、サブ レポート RDLC を表します。

次のようなことをする必要があります:

this.ReportViewer1.LocalReport.LoadReportDefinition(stream1);
this.ReportViewer1.LocalReport.LoadSubreportDefinition("MySubReport", stream2);
于 2012-06-06T06:51:09.900 に答える