2009-05-19 15 views
6

¿Cómo integro ReportViewer en el proyecto asp.net MVC?Fuente de datos de ReportViewer en asp.net-mvc

Quiero agregar objetos comerciales del espacio de nombres MVCProject.Model. ReportViewer permite objetos comerciales de DataSet.

¿Es posible elegir otra fuente de datos, como LinqDataSource, u objeto directo a objetos de clase LINQ-to-SQL?

¿Cuál sería la mejor solución para agregar informes en un proyecto de MVC?

Respuesta

1

Va a ser difícil. En primer lugar, necesita ViewState, por lo que deberá alojar el informe en una página regular de WebForms. Aunque esto no es tan malo: WebForms y MVC funcionan bien, uno al lado del otro.

La parte difícil es vinculante para los objetos reales de IEnumerable y no para esos ObjectDataSources ficticios.

El primer paso es crear un modelo de datos de informe. Puedes hacer esto en código, con consultas, lo que sea, como quieras. Una estructura algo similar (pero obviamente mucho más grande) es típica:

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; } 
} 

El truco es usar un control BindingSource en su informe y establezca la propiedad DataSource a typeof(ReportSource) - sí, la fuente de datos es el tipo de su modelo de informe.

Al diseñar su informe no obtendrá mucha riqueza, pero podrá hacerlo.

En lo que respecta a soluciones de informes de terceros, encontramos que Telerik's es la mejor opción.

+0

¿Dónde exactamente uso este BindingSource ?? – AndreMiranda

+0

Antes que nada, lamento que tengas que trabajar con esta herramienta horrible. BindingSource es un "control" que puede "arrastrar" a la superficie del diseñador. –

+0

MVC no está diseñado para controles que se pueden arrastrar y soltar.Claro que puedes 'hackearlos' para que trabajen con MVC (ya que MVC aún se basa en la misma base que los formularios web) pero va en contra del paradigma MVC, por lo que no es recomendable. La respuesta de Shiraz es buena si tiene informes existentes que debe usar con MVC. –

2

Una forma alternativa de hacerlo sería generar el informe en el servidor de informes, luego transmitirlo a la aplicación mvc en formato PDF.

0

Tengo un pequeño proyecto que vomité en codeplex que es un proyecto de mvc con un informe.

http://mvctaskmanagement.codeplex.com/

Básicamente como hago dev en una caja de XP, mi forma de la tela tenía que quedarse relegados a un proyecto separado. Como tengo un proyecto de capa de servicio, lo puse allí.

Desde allí, llamo a mi informe a través de una publicación ajax tirando los parámetros a la página de informes, que luego pasa a la misma capa de servicio utilizada para generar la vista previa.

¡Buena suerte!

2

Tengo una idea que no se ha probado pero que puede funcionar. 1- Coloque el control del visor de informes en una página de formulario web ASP.Net estándar (p. Ej. ReportViewer.aspx) 2- En su MVC, agregue un iframe que haga referencia a esta página de ReportViewer.aspx 3- Pase los parámetros a la página usando sesiones o consultar cadenas

Avíseme si th es works

+0

Esta es mi idea actual, horrible. Estoy seguro de que funcionaría, pero preferiría tener algo más elegante. – vbullinger

Cuestiones relacionadas