Home > DeveloperSection > Forums > how to create rdlc report in mvc
Ankit Singh

Total Post:341

Points:2389
Posted on    February-15-2016 9:38 PM

 Reporting C#  Reporting  Mvc 
Ratings:


 1 Reply(s)
 365  View(s)
Rate this:
we want to  create rdlc report in mvc how will  do this  please help me.


aditya kumar Patel

Total Post:246

Points:1752
Posted on    February-15-2016 9:58 PM

Controller

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.Entity;
using System.Data;
using Microsoft.Reporting.WebForms;
using System.IO;
using ForumMVC;
using ForumMVC.Models;
using System.ComponentModel;
namespace ForumMVC.Controllers
{
public class HomeController : Controller
{
forumEntities1 db = new forumEntities1();
public ActionResult Index()
{

return View();
}

public ActionResult PrintPDF()
{
LocalReport localReport = new LocalReport();
localReport.ReportPath = Server.MapPath("~/Graph.rdlc");
ReportDataSource reportDataSource = new ReportDataSource();
reportDataSource.Name = "DataSet1";
DataSet ds = new DataSet();
DataTable dt = new DataTable();

var Result = from c in db.CUSTOMER
join o in db.ORDER on c.CUST_ID equals o.CUST_ID
join p in db.PRODUCT on o.PRODUCT_ID equals p.PRODUCT_ID
select new
{
Id = c.CUST_ID,
Name = c.CUST_NAME,
Date = o.ORD_DATE,
Product = p.PRODUCT_NAME,
Price = p.PRICE
};
dt = ConvertToDataTable(Result.ToList());
ds.Tables.Add(dt);
reportDataSource.Value = ds.Tables[0];
localReport.DataSources.Add(reportDataSource);
string reportType = "PDF";
string mimeType;
string encoding;
string fileNameExtension;

string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>PDF</OutputFormat>" +
" <PageWidth>8.5in</PageWidth>" +
" <PageHeight>11in</PageHeight>" +
" <MarginTop>0.5in</MarginTop>" +
" <MarginLeft>1in</MarginLeft>" +
" <MarginRight>1in</MarginRight>" +
" <MarginBottom>0.5in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
string[] streams;
byte[] renderedBytes;
renderedBytes = localReport.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
//Response.AddHeader("content-disposition", "attachment; filename=Data." + fileNameExtension);
Response.ContentType = "application/pdf";
Response.AddHeader("Content-length", renderedBytes.Length.ToString());
Response.AddHeader("content-disposition", "inline;filename=Data." + fileNameExtension);
Response.BinaryWrite(renderedBytes);
return null;
}

public DataTable ConvertToDataTable<T>(IList<T> data)
{
PropertyDescriptorCollection properties =
TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
DataRow row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
table.Rows.Add(row);
}
return table;

}


}
}

index view 
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery-1.9.1.min.js"></script>
<script>
$(document).on('click', '.PrintPDF', function (e) {
var win = window.open('../Home/PrintPDF/', '_blank');
console.log('click');
if (win) {
win.focus();
} else {
alert('Please allow popups for this site');
}
});
</script>
</head>
<body>
<input id="btnreportmvc" type="button" value="Generate report"
class="btn btn-info PrintPDF" style="margin-right: 10px;" />
</body>
</html>

Report Design

Report 



Don't want to miss updates? Please click the below button!

Follow MindStick