2

ReportViewer をローカル処理モードで使用し、linq-to-entites (IQueryable<>) でデータを取得します。データには画像も含まれており、テーブル内のレポートに表示されます。サンプル データベースで実行すると、結果のデータセットには約 30000 項目が含まれます。

レポートはページに分割されていますが、ReportViewer はすべてのレコードを同時にロードします。イメージ ソースを [データベース] から [外部] に変更し、SQL クエリを高速化するためにサービス (.ashx) を介してイメージの読み込みを実装しました。それでも、レポート ビューアーはすべての画像 (表示されたページの画像だけでなく) を読み込み、レンダリング レポートのみを読み込みます。

レポートのパフォーマンスを向上させる方法を知っていますか? レポート ビューアーがページングを使用せず、代わりにすべてのデータを読み込むのはなぜですか? 多分私は何か間違ったことをしていますか?reportviewer がページごとにデータをロードするようにするにはどうすればよいですか。

4

1 に答える 1

0

ローカル処理を使用する場合のMSDNページから

「すべてのデータとレポートの処理はクライアントで実行されるため、大規模または複雑なレポートやクエリを処理しようとすると、パフォーマンスが低下する可能性があります。」

ソース: http://msdn.microsoft.com/en-us/library/ms251704(v=vs.80).aspx

考えられる解決策: レポート フィルタを追加して、結果セットを論理的に分割してみてください。

于 2012-11-03T15:22:24.597 に答える