Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

ICachedReportSourceWebResolver Interface

Retrieves a CachedReportSourceWeb object associated with the specified report name.

Namespace: DevExpress.XtraReports.Web.WebDocumentViewer

Assembly: DevExpress.XtraReports.v24.2.Web.dll

NuGet Package: DevExpress.Web.Reporting.Common

#Declaration

public interface ICachedReportSourceWebResolver

#Remarks

When the Web Document Viewer displays a report specified by its name, it can use a ICachedReportSourceWebResolver service to get the CachedReportSourceWeb object that generates a document from a report and caches the document pages.

#Implementation

The following code is a custom ICachedReportSourceWebResolver implementation:

public class CustomCachedReportSourceWebResolver : ICachedReportSourceWebResolver {
  public bool TryGetCachedReportSourceWeb(string reportName, out CachedReportSourceWeb CachedReportSourceWeb) {
      XtraReport report = null;
      if(reportName == "Report1") {
          report = new Report1();
      }
      if(reportName == "Report2") {
          report = new Report2();
      }
      if(reportName == "DocumentMerging") {
          var report1 = new Report1();
          var cachedReportSource1 = new CachedReportSourceWeb(report1);
          cachedReportSource1.CreateDocument();

          var report2 = new Report2();
          var cachedReportSource2 = new CachedReportSourceWeb(report2);
          cachedReportSource2.CreateDocument();

          cachedReportSource1.ModifyDocument(x => {
            x.AddPages(cachedReportSource2.PrintingSystem.Pages);
          }
          CachedReportSourceWeb = cachedReportSource1;
          return true;
      }
      if(report == null) {
          CachedReportSourceWeb = null;
          return false;
      }
      CachedReportSourceWeb = new CachedReportSourceWeb(report);
      return true;
  }
} 

#Registration

ASP.NET Web Forms and MVC applications
using DevExpress.XtraReports.Web.WebDocumentViewer;
//...
void Application_Start(object sender, EventArgs e) {
    DefaultWebDocumentViewerContainer.Register<ICachedReportSourceWebResolver, CustomCachedReportSourceWebResolver>();
}
ASP.NET Core applications
using DevExpress.XtraReports.Web.WebDocumentViewer;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSingleton<ICachedReportSourceWebResolver>(new CustomCachedReportSourceWebResolver());

var app = builder.Build();

If the TryGetCachedReportSourceWeb(String, out CachedReportSourceWeb) method returns false, the Document Viewer calls the IWebDocumentViewerReportResolver service.

Note

Review the Open a Report in ASP.NET Core Application help topic for more information.

See Also