ActiveReports for .NET 18.0J
WebViewerコントロールの使用
ActiveReportsユーザーガイド > レポートの表示 > ASP.NET用のビューワの使用 > WebViewerコントロールの使用

ASP.NET用のWebViewerコントロールは、.NET Framework 4.6.2 ~ 4.8.1でのみ使用できます。

WebViewerコントロールは、Webアプリケーション上でレポートを表示するための機能です。

WebViewerには3種類の表示形式が用意されています。これらの表示形式は、WebViewerコントロールのViewerTypeプロパティで設定します。

WebViewerでは、RDLレポートを、通常モード、あるいは、ゲラモードの2種類でレンダリングできます。ゲラモードを使うと、RDLレポートを単一ページで表示できます。RenderModeプロパティを「Galley」に設定することで、ゲラモードで表示できます。

メモ: WebViewerコントロールとJSビューワは、IISのマネージパイプラインモードが統合モードの場合のみサポートされます。クラシックモードで使用する場合は、PlatformNotSupportedException例外が発生します。

WebViewerコントロールの使用方法

  1. Visual Studioで、「ASP.NET Webアプリケーション(.NET Framework)」を作成します。
  2. MESCIUS.ActiveReports.Web.jaパッケージをインストールするには、[ツール]>[NuGet パッケージ マネージャー]>[ソリューションの Nuget パッケージの管理]メニュー コマンドの順に選択し、[参照]タブでパッケージを検索してインストールします。
  3. 前手順にて追加したパッケージの依存関係にあるパッケージをインストールします。MESCIUS.ActiveReports.Web.Design.ja(Visual Studio2022の場合はMESCIUS.ActiveReports.Web.Design.VS2022)パッケージを[ツール]>[NuGet パッケージマネージャー]>[ソリューションの Nuget パッケージの管理]メニュー コマンドの順に選択し、[参照]タブでパッケージを検索してインストールします。
  4. [ソリューションエクスプローラー]で、プロジェクトを右クリックし、[追加]>[新しい項目]を選択します。
  5. Webフォームを選択し、[追加]をクリックします。
  6. 追加されたWebFormの[デザイン]タブに移動し、デザイナにWebViewerコントロールをドラッグ&ドロップします。
    メモ: WebViewerコントロールにレポートを表示するためには、Global.asaxのイベントでUseReportViewerメソッドを呼び出す必要があります。このコードは、WebViewerコントロールをドラッグ&ドロップすると、自動で追加されます。

レポートサービスの設定方法

WebViewerコントロールはデフォルトではルート直下のレポートサービス(/api/reporting/)を使用してレポートの描画処理を実行する仕様になっています。

Webアプリケーションをサブディレクトリに配置する場合にはレポートサービスの設定を変更する必要があります。

■例

運用環境を上記のような構成にする場合は、URLをReportService.Urlプロパティに設定してください。

サンプルコード(C#)
コードのコピー
protected void Page_Load(object sender, EventArgs e)
{
  // 絶対パスを設定する場合
  this.WebViewer1.ReportService.Url = https://example.com/WebApplication1/api/reporting/;
  // アプリケーションルートからの相対パスを設定する場合
  this.WebViewer1.ReportService.Url = Request.ApplicationPath.TrimEnd('/') + "/api/reporting/";
}
サンプルコード(VB.NET)
コードのコピー
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  ' 絶対パスを設定する場合
  Me.WebViewer1.ReportService.Url = https://example.com/WebApplication1/api/reporting/
  ' アプリケーションルートからの相対パスを設定する場合
  Me.WebViewer1.ReportService.Url = Request.ApplicationPath.TrimEnd("/"c) + "/api/reporting/"
End Sub

WebViewerコントロールでセクションレポート(コードベース)のプレビュー

次のように、Global.asaxファイルを更新します。

Global.asax.cs
コードのコピー
public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            this.UseReporting(settings =>
            {
                settings.UseFileStore(new DirectoryInfo(Server.MapPath("~")));
                settings.UseCompression = true;
                settings.UseCustomStore(GetReport);
            });
        }
        public object GetReport(string reportName = "SectionReport")
        {
            SectionReport1 rpt = new SectionReport1();
            return rpt;
        }
    }
Global.asax.vb
コードのコピー
Public Class _Global
    Inherits System.Web.HttpApplication
    Protected Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        Me.UseReporting(Sub(settings)
                            settings.UseFileStore(New DirectoryInfo(Server.MapPath("~")))
                            settings.UseCompression = True
                            settings.UseCustomStore(AddressOf GetReport)
                        End Sub)
    End Sub
    Public Function GetReport(ByVal Optional reportName As String = "SectionReport") As Object
        Dim rpt As SectionReport1 = New SectionReport1()
        Return rpt
    End Function
End Class

メモ:UseEmbeddedTemplatesの代わりに、UseFileStoreメソッドまたはUseCustomStoreメソッドを使用できます。

関連トピック