ASP.NET用のWebViewerコントロールは、.NET Framework 4.6.2 ~ 4.8.1でのみ使用できます。
WebViewerコントロールは、Webアプリケーション上でレポートを表示するための機能です。
WebViewerには3種類の表示形式が用意されています。これらの表示形式は、WebViewerコントロールのViewerTypeプロパティで設定します。
WebViewerでは、RDLレポートを、通常モード、あるいは、ゲラモードの2種類でレンダリングできます。ゲラモードを使うと、RDLレポートを単一ページで表示できます。RenderModeプロパティを「Galley」に設定することで、ゲラモードで表示できます。
WebViewerコントロールはデフォルトではルート直下のレポートサービス(/api/reporting/)を使用してレポートの描画処理を実行する仕様になっています。
Webアプリケーションをサブディレクトリに配置する場合にはレポートサービスの設定を変更する必要があります。
■例
WebフォームのURL
- https://example.com/WebApplication1/WebForm1.aspx
デフォルトで参照するレポートサービスのURL
- https://example.com/api/reporting/
正しいレポートサービスのURL
- https://example.com/WebApplication1/api/reporting/
運用環境を上記のような構成にする場合は、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 |
次のように、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メソッドを使用できます。