IRenderingExtension インターフェイスの実装
このセクションで以前に説明したように、表示拡張機能は、実際のデータと組み合わせたレポート定義から結果を取得し、結果データを使用可能な形式で表示します。組み合わされたデータの変換と書式設定は、IRenderingExtension を実装する共通言語ランタイム (CLR) クラスを通して実行されます。これにより、オブジェクト モデルは、ビューア、プリンタなど出力先で使用できる出力形式に変換されます。
IRenderingExtension には、コード化が必要な次の 3 つのメソッドがあります。
- Render メソッド : レポートを表示します。
- RenderStream メソッド : レポート内の特定のストリームを表示します。
- GetRenderingResource メソッド : アイコンのようなレポートに必要な追加情報を取得します。
ここでは、これらのメソッドについて詳しく説明します。
Render メソッド
Render メソッドには、次のオブジェクトを表す引数が含まれます。
- report : 表示するレポート。このオブジェクトには、レポートのプロパティ、データ、およびレイアウト情報が含まれます。レポートは、レポート オブジェクト モデル ツリーのルートです。
- reportServerParameters : 文字列辞書オブジェクト、およびレポート サーバーのパラメータがあればそのパラメータを一緒に含みます。
- deviceInfo : デバイス設定を含むパラメータ。デバイス設定の詳細については、「Reporting Services デバイス情報設定」を参照してください。
clientCapabilities : 表示先クライアントに関する情報を持つ NameValueCollection 辞書オブジェクトを含むパラメータ。 - EvaluateHeaderFooterExpressions デリゲート : ページのヘッダーまたはフッターがページのコンテンツに依存する場合に呼び出されます。つまり、ヘッダーまたはフッターにレポートのデータの合計または集計が含まれる場合があります。このデリゲートの詳細については、SQL Server Books Online の「EvaluateHeaderFooterExpressions デリゲート」を参照してください。
- 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 メソッドを使用できます。このメソッドは、レポート全体を表示せずに情報を取得します。
実装またはオーバーライドするその他のクラス
レポートの継承階層では、ReportItem クラスはレポートの 1 つのアイテムを表す抽象型基本クラスです。この基本クラスは、レポートのより詳細なオブジェクトを表すクラスであり、次のようなクラスから継承されます。
- DataRegion
- Image (IImage インターフェイスからも継承)
- Textbox
- Line
- Subreport
- PageSection
- Rectangle
DataRegion クラスからは、さらに次のクラスも継承されます。
- Chart
- List
- Matrix
- Table
ReportItem および DataRegion から継承されるクラスの詳細については、「Microsoft.ReportingServices.ReportRendering」を参照してください。