SSRS сообщают о проблеме в wpf

#wpf #reporting-services #reportviewer

#wpf #службы reporting-services #reportviewer

Вопрос:

 DataTable reportData = this.GetReportData(startId, endId, empId, minAmount, reportType);


                ReportViewer reportViewer = new ReportViewer();
                reportViewer.ProcessingMode = ProcessingMode.Local;

                reportViewer.LocalReport.ReportEmbeddedResource = "PDCL.ERP.Modules.Marketing.Reports.rptDoctorDetail.rdlc";  

                ReportDataSource ds = new ReportDataSource();
                ds.Name = "DoctorDetail_Report";
                ds.Value = reportData;
                reportViewer.LocalReport.DataSources.Add(ds);


                reportViewer.RefreshReport();
                this.WindowsFrmHost.Child = reportViewer;
  

это мой код.Я использую SSRS, но средство просмотра показывает только данные, но не какие-либо данные.
Почему ..?

Комментарии:

1. Вы пробовали добавлять обработчики событий в ReportError или RenderingCompleted, чтобы проверить, поступает ли какая-либо дополнительная информация из элемента управления viewer?

Ответ №1:

Я думаю, вам нужно вызвать refresh report после загрузки reportviewer в представление.

Вот мой код, который работает (reportViewerHost — это WindowsFormsHost, объявленный в UserControl с использованием XAML)

 private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            SqlReportViewModel report = (SqlReportViewModel)this.DataContext;
            Microsoft.Reporting.WinForms.ReportViewer reportviewer = new Microsoft.Reporting.WinForms.ReportViewer();
            reportViewerHost.Child = reportviewer;
            reportviewer.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;
            reportviewer.LocalReport.ReportPath = report.FileName;
            report.LoadReport(reportviewer.LocalReport);
            reportviewer.RefreshReport();
        }
  

в методе LoadReport SqlReportViewModel я устанавливаю источник данных как

 _report.DataSources.Add(new ReportDataSource(dataset.Name, tbl));
  

где _report — это ссылка на объект LocalReport, передаваемая в качестве аргумента

 LocalReport _report;
  

Мне потребовалось некоторое время, чтобы разобраться в этом … надеюсь, это поможет..
Удачи ..:)

Ответ №2:

 ReportViewer reportViewer = new ReportViewer();
DataTable reportData = this.GetReportData(startId, endId, empId, minAmount, reportType); 
reportViewer.LocalReport.ReportPath = "Reports//abc.rdlc";
ReportDataSource ds = new ReportDataSource("DataSet1", reportData);
//DataSet1 is the datasetname of the datasource on the rdlc report
reportViewer.LocalReport.DataSources.Add(ds);
reportViewer.RefreshReport();
Reports.TReportViewer report = new Reports.TReportViewer(); 
//TReportViewer is the window of wpf application where i set the reportviewerhost.
report.reportViewerHost.Child = reportViewer;   
  

надеюсь, это ответит на ваш вопрос.