Wpf中的SSRS报告问题

Joh*_*nny 5 wpf reportviewer reporting-services

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;
Run Code Online (Sandbox Code Playgroud)

这是我的代码.我正在使用SSRS,但查看器只显示但不显示任何数据.为什么..?

Bhu*_*van 2

我认为您需要在将报表查看器加载到视图中后调用刷新报表。

这是我的有效代码(reportViewerHost 是 WindowsFormsHost,使用 XAML 在 UserControl 中声明)

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();
        }
Run Code Online (Sandbox Code Playgroud)

在 SqlReportViewModel 的 LoadReport 方法中,我将数据源设置为

_report.DataSources.Add(new ReportDataSource(dataset.Name, tbl));
Run Code Online (Sandbox Code Playgroud)

其中 _report 是对作为参数传递的 LocalReport 对象的引用

LocalReport _report;
Run Code Online (Sandbox Code Playgroud)

我花了一段时间才弄清楚这一点...希望这有帮助..祝你好运..:)