Sunday, August 27, 2017

MVC : Create RDLC report

In this article I am going to explain how to create RDLC report in MVC application

Description:
I want to show report of State population. I am going to use RDLC report to create and Reportviewer to show report.

Implementation:
Follow the below given steps to create RDLC report in MVC application:

Step 1:
Before create report you have to add Reportviewer to MVC application. To add ReportViewer go to Tools >>  Library Package Manager >> Package manger console and paste the following command. After that hit the enter button.

Install-Package ReportViewerForMvc

After successfully completion of this you will automatically “ReportViewerWebForm,aspx” page will be added to root of project.

Step 2:
Now add RDLC report to project. How to add RDLC report? I have add Rptpopulation.rdlc to project and set datasource for it.

Step 3:

Note :  I am using Database first approach.

Structure of Tb_Population.cs in Model:

namespace MvcApplication4.Models
{
    using System;
    using System.Collections.Generic;
   
    public partial class Tb_Population
    {
        public int Id { get; set; }
        public string StateName { get; set; }
        public Int64 TotalPopulation { get; set; }
    }
}


Step 4:

Add an empty controller to project. I have added ReportsController.cs controller to project and create Actionresult to create report. Don’t forget to import the Reportviewer namespace.

using Microsoft.Reporting.WebForms;

Complete code of Controller

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication4.Models;
using Microsoft.Reporting.WebForms;
using System.Data;

namespace MvcApplication4.Controllers
{
    public class ReportsController : Controller
    {
        DemoEntities db = new DemoEntities();
        //
        // GET: /Reports/

        public ActionResult Index()
        {
            var tb = db.Tb_Population.ToList();
            return View(tb);
        }
        public ActionResult Reports()
        {
            List<Tb_Population> population = new List<Tb_Population>();
            population = db.Tb_Population.ToList();         
            var rptviewer = new ReportViewer();
            rptviewer.ProcessingMode = ProcessingMode.Local;
            rptviewer.LocalReport.ReportPath = Request.MapPath(Request.ApplicationPath) + @"Rptpopulation.rdlc";
            ReportDataSource rptdatasource = new ReportDataSource("ds", population);
            rptviewer.LocalReport.DataSources.Add(rptdatasource);
            rptviewer.SizeToReportContent = true;
            ViewBag.ReportViewer = rptviewer;
            return View();
        }
      
    }
}

Step 5:

Now add view for Reports action.

Complete Source of View

@using ReportViewerForMvc;

@model MvcApplication4.Models.Tb_Population

@{
    ViewBag.Title = "State population reports";
}

<h4>State population reports</h4>
@if (ViewBag.ReportViewer != null)
{
@Html.ReportViewer(ViewBag.ReportViewer as Microsoft.Reporting.WebForms.ReportViewer)
}
<style>
    iframe {
        border-width: 0;
    }
</style>






No comments:

Post a Comment