IRenderingExtension インターフェイスを実装する
表示拡張機能では、実際のデータと組み合わされるレポート定義から出力結果を取得し、その結果データを使用可能な形式で表示します。 組み合わされたデータの変換と書式設定は、IRenderingExtension を実装する共通言語ランタイム (CLR) クラスを使用して実行されます。 これにより、オブジェクト モデルは、ビューアーやプリンターなどの出力先で使用できる出力形式に変換されます。
IRenderingExtension には、コーディングが必要なメソッドが 3 つあります。
Render : レポートを表示します。
RenderStream : レポートの特定のストリームを表示します。
GetRenderingResource - アイコンなど、レポートに必要な追加情報を取得します。
ここでは、これらのメソッドについて詳しく説明します。
Render メソッド
Render メソッドには、次のオブジェクトを表す引数が含まれます。
report: 表示するレポート。 このオブジェクトには、レポートのプロパティ、データ、およびレイアウト情報が含まれます。 レポートは、レポート オブジェクト モデル ツリーのルートです。
ServerParameters: 文字列辞書オブジェクト、およびレポート サーバーのパラメーター (存在する場合) が含まれます。
デバイス設定 を含む deviceInfo パラメーター。 詳細については、「デバイス情報の設定を表示拡張機能に渡す」を参照してください。
レンダリング先のクライアントに関する情報をNameValueCollection持つディクショナリ オブジェクトを含む clientCapabilities パラメーター。
レンダリング結果に 関する情報を含む 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 レンダリングの画像などのセカンダリ ストリームや、Image/EMF などのマルチページ レンダリング拡張機能の他のページに使用されます。
GetRenderingResource メソッド
GetRenderingResource メソッドは、レポート全体を表示せずに情報を取得します。 レポート自体を表示する必要のない情報がレポートに必要な場合があります。 たとえば、表示拡張機能に関連付けられたアイコンが必要な場合、