非同期表示のための ReportViewer の構成
ReportViewer Web サーバー コントロールを非同期に表示するように構成するには、表示モードと処理モードを設定する必要があります。表示動作はコントロールの AsyncRendering プロパティによって指定され、処理動作は ProcessingMode プロパティによって指定されます。これら 2 つのプロパティを組み合わせて、ASP.NET ページの表示方法を定義します。
次の表では、さまざまな表示モードと処理モードに対応する ReportViewer コントロールの動作について説明します。
プロパティの設定 |
ローカル処理モード (LocalReport クラス) |
リモート処理モード (ServerReport クラス) |
---|---|---|
AsyncRendering = True |
|
|
AsyncRendering = False |
|
|
AsyncRendering が True に設定されている場合は、コードでナビゲーション イベントを定期受信するとポストバックが発生します。ただし、ドリルスルー イベントは除きます。このイベントでは、イベント サブスクリプションに関係なくポストバックが発生します。プロパティが False に設定されている場合は、イベントを定期受信しているかどうかに関係なくポストバックが発生します。
非同期モード
AsyncRendering プロパティが True に設定されている場合、ReportViewer によってレポートがページの IFRAME 内に表示されます。IFRAME を使用すると、ReportViewer コントロールによってブロックされることなく残りのページを読み込むことができます。
ローカル処理モードとリモート処理モードの両方で、レポートを表示するために IFRAME が使用されます。ただし、ReportViewer での進行状況インジケーター (有効になっている場合) の表示方法には違いがあります。レポートがローカルで処理される場合、レポートの進行状況インジケーターは、すべての処理が完了するまで表示されません。レポートがリモートで処理される場合、進行状況インジケーターが有効になっているときは、サーバーでのレポートの処理中にインジケーターが表示されます。
XHTML と ReportViewer Web サーバー コントロールに関する注意事項
XHTML で作成されたアプリケーションで非同期モードで実行するように ReportViewer Web サーバー コントロールを構成した場合、ReportViewer コントロールを正しく表示するには、特定の手順に従う必要があります。ReportViewer コントロールで相対的な高さを使用している場合 (たとえば、使用可能な空間の一定比率として高さを指定している場合など) は、XHTML 形式のテーブルでのフレームと DIV タグの表示方法の影響で、コントロールがゼロ (0) ピクセルの高さに縮小されます。この問題は、次のいずれかの手順を実行して回避できます。
ReportViewer コントロールの高さを、比率ではなく実際の値で明示的に設定します。
<head> タグにスタイル設定の <style>html,body,form {height:100%}</style> を追加します。HTML、body、form タグで最大の高さを強制することで、ReportViewer コントロールで使用するフレームも最大の高さに拡張され、ページに表示されます。
ページから xhtml doctype を削除します。
同期モード
AsyncRendering プロパティが False に設定されている場合、ReportViewer によってレポートがインライン HTML として残りのページ内に表示されます。HTML がインラインなので、レポートが処理されて表示される間は残りのページがブロックされます。
注意
見出しマップを含んだレポートを同期モードで表示している場合、見出しマップは表示されません。
参照
関連項目
ReportViewer
ReportViewer のプロパティ (ReportViewer Properties)