#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;
надеюсь, это ответит на ваш вопрос.