Search results

Display ssrs rdl report in Syncfusion ASP.NET MVC Report Viewer

This section explains you the steps required to create your first ASP.NET MVC reporting application to display already created SSRS RDL report in Syncfusion ASP.NET MVC Report Viewer without using a Report Server.

Create ASP.NET MVC 5 application

  1. Open Visual Studio 2017, click the File menu, go to New, and then select Project.

  2. Go to Installed > Visual C# > Web, and then select the required .NET Framework in the drop-down.

  3. Select ASP.NET Web Application (.NET Framework), change the application name, and then click OK.

    Asp.Net MVC5 project template

  4. Choose MVC and Web API, and then click OK.

    Asp.Net MVC5 web application template

Configure Report Viewer in an application

  1. Right-click the project or solution in the Solution Explorer tab, and choose Manage NuGet Packages. Alternatively, go to Tools > NuGet Package Manager > Manage NuGet Packages for Solution.

    Refer to the NuGet Packages to learn more details about installing and configuring Report Viewer NuGet packages.

  2. Search for Syncfusion.Reporting.Web and Syncfusion.Reporting.Mvc5 NuGet packages, and install them in your MVC application.

    Package Purpose
    Syncfusion.Reporting.Web Creates Web API service to process the reports.
    Syncfusion.Reporting.Mvc5 Contains HTML helpers to create client-side Report Viewer control.
  3. Open the ~/Views/Web.config file, and add the Syncfusion.Reporting.Mvc assembly reference to the <system.web.webPages.razor> element.

    <configuration>
        ....
        ....
        <system.web.webPages.razor>
            ....
            ....
            <pages pageBaseType="System.Web.Mvc.WebViewPage">
                <namespaces>
                    ....
                    ....
                    <add namespace="Syncfusion.Reporting.Mvc"/>
                </namespaces>
            </pages>
        </system.web.webPages.razor>
        ....
        ....
    </configuration>
  4. Set the value of UnobtrusiveJavaScriptEnabled to false in Root directory web.config file as demonstrated in the following code example.

    <configuration>
    <appSettings>
        ......
        ......
        <add key="UnobtrusiveJavaScriptEnabled" value="false" />
    </appSettings>
    ......
    ......
    </configuration>

Refer scripts and CSS

The Syncfusion.Reporting.JavaScript contains reporting components scripts and style sheets. It is a dependent package for Syncfusion.Reporting.Mvc5. When installing the Syncfusion.Reporting.Mvc5, the Syncfusion.Reporting.JavaScript package is also installed. The scripts and styles required to Report Viewer are added into the Scripts and Content folders in your application.

  1. The following scripts and style sheets are mandatorily required to use the Report Viewer.

    • ej.reports.all.min.css
    • jquery-1.10.2.min.js
    • ej.reporting.common.min.js
    • ej.reporting.widgets.min.js
    • ej.chart.min.js - Renders the chart item. Add this script, only if your report contains the chart report item.
    • ej.lineargauge.min.js and ej.circulargauge.min.js - Render the gauge item. Add these scripts only if your report contains the gauge report item.
    • ej.map.min.js - Renders the map item. Add this script only if your report contains the map report item.
    • ej.report-viewer.min.js
  2. Open the \Views\Shared\_Layout.cshtml page.

  3. Add the listed references in the same order given in above list. You can replace the following code in the \Views\Shared\_Layout.cshtml page.

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>@ViewBag.Title - My ASP.NET Application</title>
        @Styles.Render("~/Content/css")
        @Styles.Render("~/Content/reports/material/ej.reports.all.min.css")
        @Scripts.Render("~/bundles/modernizr")
    </head>
    <body>
        <div style="min-height: 600px;width: 100%;">
            @RenderBody()
        </div>
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/bootstrap")
        @Scripts.Render("~/Scripts/reports/common/ej.reporting.common.min.js")
        @Scripts.Render("~/Scripts/reports/common/ej.reporting.widgets.min.js")
        <!--Renders the chart item. Add this script, only if your report contains the chart report item.-->
        @Scripts.Render("~/Scripts/reports/data-visualization/ej.chart.min.js")
        <!--Render the gauge item. Add these scripts only if your report contains the gauge report item.-->
        @Scripts.Render("~/Scripts/reports/data-visualization/ej.circulargauge.min.js")
        @Scripts.Render("~/Scripts/reports/data-visualization/ej.lineargauge.min.js")
        <!--Renders the map item. Add this script only if your report contains the map report item.-->
        @Scripts.Render("~/Scripts/reports/data-visualization/ej.map.min.js")
        <!-- Report Viewer component script-->
        @Scripts.Render("~/Scripts/reports/ej.report-viewer.min.js")
        @RenderSection("scripts", required: false)
        @Html.SF().ScriptManager()
    </body>
    </html>

    To learn more about rendering a report with data visualization report items, refer to the how to render data visualization report items section.

Configure Script Manager

Open the the ~/Views/Shared/_Layout.cshtml page and add the Script Manager at the end of <body> element as in the following code sample.

<body>
    ....
    ....
    <!-- Syncfusion reporting script manager -->
    @Html.SF().ScriptManager()
</body>

Initialize Report Viewer

Using SF() tag, add the Syncfusion Report Viewer component in any web page (cshtml) of your application in the ~/Views folder. For an example, the Index.cshtml page can be replaced with the following code by removing the existing codes.

@(Html.SF().ReportViewer("viewer"))

Add already created reports

The Report Viewer is only for rendering the reports. You must use a report generation tool to create a report. To learn more about this, refer to the create RDL report section.

  1. Create a folder Resources in your application to store the RDL reports.

  2. Add already created reports to the newly created folder.

    In this tutorial, the sales-order-detail.rdl report is used, and it can be downloaded in this link. You can add the reports from Syncfusion installation location. For more information, refer to the samples and demos section.

Configure Web API

The interface IReportController has declaration of action methods that are defined in the Web API Controller for processing the RDL, RDLC, and SSRS reports and for handling request from the Report Viewer control. The IReportController has the following action methods declaration:

Methods Description
PostReportAction Action (HttpPost) method for posting the request in report process.
OnInitReportOptions Report initialization method that occurs when the report is about to be processed.
OnReportLoaded Report loaded method that occurs when the report and sub report start loading.
GetResource Action (HttpGet) method to get resource for the report.

ReportHelper

The class ReportHelper contains helper methods that help to process a Post or Get request from the Report Viewer control and return the response to the Report Viewer control. It has the following methods:

Methods Description
GetResource Returns the report resource to the requested key.
ProcessReport Processes the report request and returns the result.

Add Web API Controller

  1. Right-click Controller folder in your project and select Add > New Item from the context menu.

  2. Select Web API Controller Class from the listed templates and name it as ReportViewerController.cs. Provide controller name

  3. Click Add.

    While adding Web API Controller class, name it with the suffix Controller that is mandatory.

  4. Open the ReportViewerController and add the following using statement.

    using Syncfusion.Reporting.Web.ReportViewer;
  5. Inherit the IReportController interface, and implement its methods (replace the following code in newly created Web API controller).

    public class ReportViewerController : ApiController, IReportController
    {
        // Post action for processing the RDL/RDLC report
        public object PostReportAction(Dictionary<string, object> jsonResult)
        {
            return ReportHelper.ProcessReport(jsonResult, this);
        }
    
        // Get action for getting resources from the report
        [System.Web.Http.ActionName("GetResource")]
        [AcceptVerbs("GET")]
        public object GetResource(string key, string resourcetype, bool isPrint)
        {
            return ReportHelper.GetResource(key, resourcetype, isPrint);
        }
    
        // Method that will be called when initialize the report options before start processing the report
        public void OnInitReportOptions(ReportViewerOptions reportOption)
        {
            // You can update report options here
        }
    
        // Method that will be called when reported is loaded
        public void OnReportLoaded(ReportViewerOptions reportOption)
        {
            //You can update report options here
        }
    }

Add routing information

To configure routing to include an action name in the URI, open the WebApiConfig.cs file and change the routeTemplate in the Register method as follows.

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }
        );
    }
}

Set report path and service URL

To render the reports available in the application, set the ReportPath and ReportServiceUrl properties of the Report Viewer. You can replace the following code in your Report Viewer page.

@(Html.SF().ReportViewer("viewer")
    .ReportServiceUrl("/api/ReportViewer")
    .ReportPath("~/Resources/sales-order-detail.rdl")
)

The report path property is set to the RDL report that is added to the project Resources folder.

Preview the report

Build and run the application to view the report output in the Report Viewer as displayed in the following screenshot.

Sales Order Detail Report

See Also

Render report with data visualization report items

Create RDLC report