1

初歩的な質問かもしれませんが、すいません。

レポート ポータルのような Web アプリケーションがあります。Crystalreportviewer コントロールを含む ReportViewer.aspx ページがあり、同じビューアーを使用してさまざまなレポートを表示しています。レポートは他の誰かがまとめて作成しているため、プロジェクトに含めた .rpt ファイルしかありません。

レポート データソースを動的に指定しているため、静的データ バインディングはありません (パラメータも動的に渡します)。

通常、レポートには複数のページがあります。

問題は、次のページに移動すると、ポストバックがあり、すべてのデータバインディングが再度行われることです。

reportdocument オブジェクトをセッションに保存し、IsPostback をチェックしてセッションから取り出すと、正常に動作します。

問題は、これが正しい方法であるかどうかです。新しいタブを開いて同じレポートを表示すると、最初のレポートを失うことになります...(クエリ文字列でGUIDを渡してから正しいレポートオブジェクトを取得するなどの奇抜なセッション管理を行うことで、これを回避できます)しかしそれでもこれは正しい方法ですか?

それがどのように行われるかの例は本当に素晴らしいでしょう...

乾杯、

オズ

4

1 に答える 1

1

ReportDocument をセッションに保持し、PostBack の場合は CrystalViewer にバインドします。

ただし、重要な点は、Page_Load ではなく Page_Init ですべてを実行することです。そうしないと、次のボタンをクリックしたときに、複数ページの Crystal レポートが 2 ページ目で動かなくなります...

于 2010-05-26T15:54:43.223 に答える