Me gustaría seguir con un único formulario y el control ReportViewer
, y en el tiempo de ejecución asignar varios informes y fuentes de datos. Las soluciones diversas y complejas reveladas por un rápido chequeo de Google me llevaron a preguntar aquí. ¿Cómo puedo conseguir esto?¿Cómo puedo reutilizar un control ReportViewer para muchos informes con fuentes de datos EF?
Respuesta
Tendrá una forma con una ReportViewer control, informes RDLC y fuentes de datos; posiblemente hay varias formas de implementar esto, pero puede tener una clase de administrador de informes que expone métodos que muestran un informe específico (por ejemplo, ShowOrdersReport()
, ShowTimeSheetReport()
, etc.) o puede definir una clase base ReportBase
con un método Show()
aplicación que solicita los parámetros cuando sea necesario ... lo que funcione, que, esencialmente, se reducen a esto:
var reportForm = new ReportViewerForm(); // instantiate the form
// load the report definition into the viewer:
reportForm.reportViewer1.LocalReport.ReportEmbeddedResource = "Namespace.Report.rdlc";
// loading the data works great with a DataSet:
var data = _reportingDataSet.Tables[0];
// create the ReportDataSource with the report data:
var reportDataSource = new ReportDataSource("rdsReportDataSource", data);
reportForm.ShowReport(new[] { reportDataSource });
Aquí se desea inyectar la dependencia _reportingDataSet
; si está utilizando procedimientos almacenados parametrizados, querrá solicitar los parámetros del informe antes de llenar el DataSet.
El método ShowReport()
agrega las fuentes de datos a LocalReport.DataSources
, y luego llama al RefreshReport()
que muestra el informe que ha especificado.
public void ShowReport(IEnumerable<ReportDataSource> dataSources)
{
foreach (var dataSource in dataSources)
reportViewer1.LocalReport.DataSources.Add(dataSource);
reportViewer1.RefreshReport();
}
Si está utilizando informes de Crystal a continuación, utilizar esto en clic del botón de informe de carga CrystalReportViewer.ReportSource = ReportName
Si está utilizando el control ReportViewer MS, entonces tiene dos pasos importantes para mostrar los informes
- asignar la ruta del archivo de informe a la ReportViewer
- Ajuste la fuente de datos
Así, por ejemplo, un control ReportViewer llamado reportViewer1 tiene que mostrar un archivo SomeReport.rdlc entonces se requiere siguiente código (digamos el clic de un botón)
this.reportViewer1.LocalReport.ReportPath = @"Add absolute path of rdlc file"//e.g. @"C:\SomeReport.rdlc" ;
this.reportViewer1.RefreshReport();
Esto es sólo un ejemplo sencillo y por simplicidad he utilizado informe estático si necesita mostrar los datos de la base de datos simplemente asigne la propiedad del origen de datos antes de llamar a RefreshReport por ej.
this.reportViewer1.LocalReport.DataSources.Add(MyreportDataSource);
donde MyreportDataSource es objeto de tipo ReportDataSource, usted puede convertir fácilmente cualquier DataTable ADO.net al objeto ReportDataSource.
espero que esta información tanto lo hará por usted, en caso de que quiera ver más detalles se puede referir a un artículo muy bueno en este lugar
No, estoy utilizando el control MS 'ReportViewer 'y los informes rdlc. – ProfK
- 1. ¿Cómo configuro programáticamente el origen de datos para el control ReportViewer de ASP.NET?
- 2. Uso de informes integrados con control ReportViewer de Microsoft en modo local
- 3. EF 4.1 RC de muchos a muchos en EF CF
- 4. muchos a muchos colección con código de EF primera
- 5. Uso de SSRS con ASP.Net ReportViewer
- 6. Exportar C# reportviewer control programmatically
- 7. EF CF Configurar la asignación muchos-a-muchos manualmente
- 8. Indicador de carga de control ReportViewer?
- 9. Informes con db4o
- 10. ¿Cómo hago con HQL, muchos para muchos?
- 11. ¿Un tutorial para diseñar informes en Visual Studio 2010?
- 12. ¿Por qué reportviewer 10 rinde informes tan lentamente?
- 13. ¿Cómo puedo reutilizar un color en una hoja de estilo?
- 14. ¿Cómo puedo reutilizar un bloque varias veces?
- 15. Crystal Reports vs ReportViewer Pros/Cons?
- 16. Fuente de datos de ReportViewer en asp.net-mvc
- 17. C# Reporting Control (informes interactivos)
- 18. Deshabilitar la paginación en un ASP.NET ReportViewer Control
- 19. ¿Puedo "unirme" en fuentes de datos en SSRS?
- 20. ¿Cómo actualizar/crear muchos datos relacionales en MVC Code-first usando EF?
- 21. Código de EF Primero CTP5, usando el método Incluir con la tabla Muchos a muchos
- 22. de control Web de Microsoft ReportViewer La exigencia de un ScriptManager
- 23. ¿Cómo reutilizar un objeto Criteria con hibernación?
- 24. ReportViewer
- 25. .NET Datos dinámicos Muchos a muchos con LINQ to SQL
- 26. ¿Cómo puedo reutilizar este botón de Android?
- 27. Usando otras fuentes de datos para cubism.js
- 28. Grails 'withTransaction' con fuentes de datos alternativas
- 29. ¿Cómo reutilizar un ostringstream?
- 30. ¿Cómo puedo enlazar un campo para un control de usuario
Si los informes de RDLC tienen parámetros, deberá pasarlos: 'var imageFolder = new ReportParameter (" imageFolder "," file: // "+ ConfigurationManager.AppSettings [" ReportImagesFolder "]); reportForm.reportViewer1.LocalReport.EnableExternalImages = true; reportForm.reportViewer1.LocalReport.SetParameters (new [] {imageFolder}); ' –