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」を参照してください。

参照

概念

表示拡張機能の実装
表示拡張機能の導入

ヘルプおよび情報

SQL Server 2005 の参考資料の入手