RDLC Report

RDLC report in MVC application

RDLC report in MVC application

Hi Friends,

Today I am going to create an MVC project with RDLC reporting service  (step by step).

1). Create a Database in SQL server.

2). Create a table in that database.

RDLC report in MVC application

3). Open Visual Studio an create a new project.

RDLC report in MVC application

RDLC report in MVC application

RDLC report in MVC application

4). Add an edmx file in the Model folder : RightClick on the Model folder in Solution Explorer section and select new item 


RDLC report in MVC application

RDLC report in MVC application


RDLC report in MVC application

RDLC report in MVC application

RDLC report in MVC application

and finally, add your edmx file.

5). Then After adding your edmx file then after, go to solution explorer and right click on your main project and add a new folder with the name of "Report".

then after creating Report folder, and again select that folder(Report) and do right-click on it and select new_item and click, then search Reporting service

in open wizard and select Report option on there.

RDLC report in MVC application

RDLC report in MVC application

RDLC report in MVC application


6). Create a table or DataSet on right-click.

RDLC report in MVC application

RDLC report in MVC application

RDLC report in MVC application

RDLC report in MVC application

RDLC report in MVC application

7). Design for your display report. like Add Header and Footer section.

RDLC report in MVC application

8). Open Controller folder in solution explorer section and select & open "HomeController.cs"

and add the code for their actions.

using Microsoft.Reporting.WebForms;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication15.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
            return View();
        }
        public ActionResult About()
        {
            ViewBag.Message = "Your app description page.";
            return View();
        }
        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";
            return View();
        }
        public ActionResult Report()
        {
            using (DataContext db = new DataContext())
            {
                var v = db.Contacts.ToList();
                return View(v);
            }
        }
        public ActionResult GenerateReport(string typeOfReport)
        {             LocalReport lr = new LocalReport();
            string path = Path.Combine(Server.MapPath("~/Report"), "MyFirstReport.rdlc");
            if (System.IO.File.Exists(path))
            {
                lr.ReportPath = path;
            }
            else
            {
                return View("Index");
            }
            List<Contact> cm = new List<Contact>();
            using (DataContext dc = new DataContext())
            {
                cm = dc.Contacts.ToList();
            }
            ReportDataSource rd = new ReportDataSource("APCRUDDataSet",cm);
            lr.DataSources.Add(rd);
            string reportType = typeOfReport;
            string mimeType;
            string encoding;
            string fileNameExtension;
            string deviceInfo =
                "<DeviceInfo>" +
                "<OutputFormat>" + typeOfReport + "</OutputFormat>" +
                "<PageWidth>8.5in</PageWidth>" +
                "</DeviceInfo>";

            Warning[] warning;
            string[] streams;
            byte[] renderedBytes;
            renderedBytes = lr.Render(
            reportType,
                deviceInfo,
                out mimeType,
                out encoding,
                out fileNameExtension,
                out streams,
                out warning);
            return File(renderedBytes, mimeType); ;
        }
    }
}

9). Create a view for Report method via right click.

@model IEnumerable<MvcApplication15.Contact>
@{
    ViewBag.Title = "Report";
}
<h2>Report</h2>
<table>
    <tr>
        <th>
            Name
        </th>
        <th>
            Mobile
        </th>
        <th>
            Address
        </th>
    </tr>
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Mobile)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Address)
        </td>
    </tr>
}
</table>
<div style="padding:10px; border:1px solid black">
    <div><a href="@Url.Action("GenerateReport", new {typeOfReport="PDF"})">Get Report PDF</a></div>
    <div><a href="@Url.Action("GenerateReport", new {typeOfReport="EXCEL"})">Get Report EXCEL</a></div>
    <div><a href="@Url.Action("GenerateReport", new {typeOfReport="WORD"})">Get Report WORD</a></div>
    <div><a href="@Url.Action("GenerateReport", new {typeOfReport="IMAGE"})">Get Report IMAGE</a></div>
</div>

10). Add link button on _Layout.cshtml page

RDLC report in MVC application

Thank you for reading this Article, I hope it'll help you. 



  Modified On Jul-22-2019 08:06:28 AM

Leave Comment