2012-09-25 67 views

Respuesta

6

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(); 
} 
+0

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}); ' –

2

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

  1. asignar la ruta del archivo de informe a la ReportViewer
  2. 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

http://www.c-sharpcorner.com/UploadFile/robo60/StandaloneRDLCReports11142007183516PM/StandaloneRDLCReports.aspx

+0

No, estoy utilizando el control MS 'ReportViewer 'y los informes rdlc. – ProfK

Cuestiones relacionadas