IRenderingExtension インターフェイスの実装
このセクションで以前に説明したように、表示拡張機能は、実際のデータと組み合わせたレポート定義から結果を取得し、結果データを使用可能な形式で表示します。組み合わされたデータの変換と書式設定は、IRenderingExtension を実装する共通言語ランタイム (CLR) クラスを通して実行されます。これにより、オブジェクト モデルは、ビューア、プリンタなど出力先で使用できる出力形式に変換されます。
IRenderingExtension には、コーディングが必要なメソッドが 3 つあります。それらを次に示します。
Render : レポートを表示します。
RenderStream : レポートの特定のストリームを表示します。
GetRenderingResource : アイコンなどのレポートに必要な追加情報を取得します。
ここでは、これらのメソッドについて詳しく説明します。
Render メソッド
Render メソッドには、次のオブジェクトを表す引数が含まれます。
report : 表示するレポート。このオブジェクトには、レポートのプロパティ、データ、およびレイアウト情報が含まれます。レポートは、レポート オブジェクト モデル ツリーのルートです。
reportServerParameters : 文字列辞書オブジェクト、およびレポート サーバーのパラメータ (存在する場合)。
deviceInfo : デバイス設定を含むパラメータ。デバイス設定の詳細については、「Reporting Services デバイス情報設定」を参照してください。
clientCapabilities : 表示先クライアントに関する情報を格納している NameValueCollection 辞書オブジェクトを含むパラメータ。
RenderProperties : 表示結果に関する情報。
createAndRegisterStream : 表示先のストリームを取得するために呼び出されるデリゲート関数。
deviceInfo パラメータ
deviceInfo には、レポート パラメータではなく、表示パラメータが含まれます。表示パラメータは表示拡張機能に渡されます。deviceInfo 値は、レポート サーバーによって NameValueCollection オブジェクトに変換されます。deviceInfo パラメータのアイテムは、大文字と小文字を区別しない値として扱われます。URL アクセスによる表示要求が行われると、rc:key=value という形式の URL パラメータが deviceInfo 辞書オブジェクトのキーと値のペアに変換されます。ブラウザ検出コードによって、clientCapabilities 辞書のアイテムである EcmaScriptVersion、JavaScript、MajorVersion、MinorVersion、Win32、Type、および AcceptLanguage も指定されます。deviceInfo に表示拡張機能が認識しない名前と値のペアがある場合は、すべて無視されます。次のコード サンプルは、アイコンを取得する GetRenderingResource メソッドを示します。
public void GetRenderingResource (CreateStream createStreamCallback, NameValueCollection deviceInfo)
{
string[] iconTagValues = deviceInfo.GetValues("Icon");
if ((iconTagValues != null) && (iconTagValues.Length > 0) )
{
// Create a stream to output to.
Stream outputStream = createStreamCallback(m_iconResourceName, "gif", null, "image/gif", false);
// Get the GIF image for one of the buttons on the toolbar
Image requiredImage = (Image) m_resourcemanager.GetObject(m_iconResourceName
// Write the image to the output stream
requiredImage.Save(outputStream, requiredImage.RawFormat);
}
return;
}
RenderStream メソッド
RenderStream メソッドは、レポート内の特定のストリームを表示します。最初の Render 呼び出しですべてのストリームが作成されますが、ストリームは最初はクライアントに返されません。このメソッドは、HTML 表示による画像などのセカンダリ ストリームや、画像、EMF など複数ページ表示拡張機能の追加ページに使用します。
GetRenderingResource メソッド
レポートに情報は必要だが、レポート自体を表示する必要がない場合があります。たとえば、表示拡張機能に関連付けられたアイコンが必要な場合は、<Icon> タグ 1 つを含む deviceInfo パラメータを使用します。このような場合に、GetRenderingResource メソッドを使用できます。このメソッドは、レポート全体を表示せずに情報を取得します。