3

ここで説明されているように、LocalReport.Render 手法を使用して Windows フォーム アプリケーションからレポートを印刷しています

動作しますが、最初のページのみが印刷されます。レポート ページではヘッダーやフッターを使用せず、本文のみを使用しています。子関係もサブレポートもありません。データ オブジェクトの非常に単純なリストです。

データソースをレポートにロードするために、次のようなことをしています。

List<mysimpledataobject> MyData = new List<mysimpledataobject>();
... add 10 items to the list ...
report.DataSources.Add(new ReportDataSource("Sales", MyData));

最初のページのみがレンダリングされます。すべてのページがストリームのリストにレンダリングされていて、最初のページだけが実際にプリンターに送信されているのではないかと思いましたが、デバッグしてストリームのリストを見ると、1 つの項目しか表示されません。ストリームには、各ページのストリームのリストに 1 つの項目が含まれている必要があります。

レンダリング コードの一部は次のようになります。

report.Render("Image", deviceInfo, CreateStream, out warnings);

foreach (Stream stream in m_streams)
    stream.Position = 0;

m_streams リストには項目が 1 つしかないため、その 1 ページだけが印刷されます。

また、ビジネス オブジェクトの DataTable と Array をデータ ソースとして渡そうとしましたが、どちらも機能しません。

どんなアイデアでも大歓迎です。ありがとう。

4

1 に答える 1

2

レポートのすべてのページをレンダリングする場合は、 の設定に0StartPage設定する必要がありますDeviceInfo

StartPageandのデフォルト値EndPage1です。そのため、常に最初のページのみをレンダリングします。

例:

string mime, encoding, fileNameExtension;
string[] streams;
Warning[] warnings;
byte[] bytes = report.Render("IMAGE", @"<DeviceInfo><OutputFormat>TIFF</OutputFormat><StartPage>0</StartPage></DeviceInfo>", out mime, out encoding, out fileNameExtension, out streams, out warnings);
于 2012-08-06T09:17:25.303 に答える