webform visual tutorial studio pasar parametros microsoft ejemplo c# reporting-services reportviewer rdlc localreport

visual - reportviewer c# webform



Generando informe de la cadena rdlc xml (1)

Estoy enfrentando un problema al generar informes.

Debo generar un informe dinámicamente usando todos los datos de la base de datos (nombre de fuente y reporte rdlc que se almacena como una cadena xml)

Así que resolví el problema de la siguiente manera:

  1. Cree un archivo rdlc local con la cadena de informe xml;
  2. Establecer la ruta al archivo;

    var rViewer = new ReportViewer(); rViewer.LocalReport.ReportPath = @"Path to the generated xml rdlc file"; var dataSource = new ReportDataSource("DataSourceName", data); rViewer.LocalReport.DataSources.Add(dataSource);

¿Podría especificar en el código subyacente directamente Report XML String en lugar de generar el archivo rdlc y establecer la ruta de acceso a él? ¿Podría recomendar una mejor manera?

Gracias


Sí, puede proporcionarle un objeto StringReader usando LoadReportDefinition como tal,

private void Page_Load(object sender, System.EventArgs e) { NMBS.ViewModels.ViewModelReport Report = (Session["CurrentReport"] as NMBS.ViewModels.ViewModelReport); ReportViewer.ProcessingMode = ProcessingMode.Local; ReportViewer.PageCountMode = PageCountMode.Actual; // Set report specifics. ReportViewer.LocalReport.DisplayName = Report.Name; ReportViewer.LocalReport.LoadReportDefinition(new System.IO.StringReader(Report.Definition)); foreach (ReportParameter Param in Report.Parameters) { ReportViewer.LocalReport.SetParameters(Param); } foreach (ReportDataSource Rds in Report.Data) { //Load Report Data. ReportViewer.LocalReport.DataSources.Add(Rds); } ReportViewer.CurrentPage = Report.CurrentPage; ReportViewer.Width = Report.Width; // Refresh the reports. ReportViewer.LocalReport.Refresh(); }

Donde Report.Defintion es la Cadena que contiene el XML de la Definición del Informe.