Tutorial :Reportviewer datasource in asp.net-mvc



Question:

How do I integrate ReportViewer in asp.net MVC project?

I want to add business objects of MVCProject.Model namespace. ReportViewer allows Business objects of DataSet.

Is it possible to choose other data source, like LinqDataSource, or Direct object to LINQ-to-SQL class objects?

What would be the best solution to add reports in an MVC project?


Solution:1

An alternative way to do this would be to generate the report on the reporting server, then stream it to the mvc app as a PDF.


Solution:2

I got an idea that is not tested but may work. 1- Place report viewer control in a standard ASP.Net web form page (e.g. ReportViewer.aspx) 2- Under your MVC, add an iframe that references to this ReportViewer.aspx page 3- Pass parameters to the page using sessions or query strings

Let me know if th is works


Solution:3

It's gonna be tough. First, you need ViewState so you'll need to host the report in a regular WebForms page. This isn't too bad though - WebForms and MVC work fine side-by-side.

The hard part is binding to real IEnumerable objects and not those phoney-baloney ObjectDataSources.

The first step is to build up a report data model. You can do this in code, with queries, whatever, however you want. A structure something like this (but obviously much bigger) is typical:

public class ReportSource  {        public Floogle[] Floogles { get; set; }  }    public class Floogle  {      public Doodad[] Doodads { get; set; }       public string Text { get; set; }  }    public class Doodad  {      public int Number { get; set; }  }  

The trick is to use a BindingSource control in your report and set the DataSource property to typeof(ReportSource) - yes, the data source is the type of your report model.

When designing your report you won't get a lot of richness, but you'll be able to do it.

As far as third party reporting solutions go, we've found Telerik's to be the best option.


Solution:4

I've got a small project I threw up on codeplex that is an mvc project with a report.

http://mvctaskmanagement.codeplex.com/

Basically since I do dev on an XP box, my web form had to get pushed to a separate project. Since I have a service layer proj, I stuck it in there.

From there I call my report via a ajax post shooting the params over to the report page, which then passes it down to the same service layer used to generate the preview.

Good luck!


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »