代码之家  ›  专栏  ›  技术社区  ›  Johnny

wpf中的SSRS报告问题

  •  5
  • Johnny  · 技术社区  · 14 年前
    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,但查看器只显示,不显示任何数据。 为什么?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Bhuvan    14 年前

    我认为您需要在reportviewer加载到视图中之后调用refresh report。

    下面是我的代码(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();
            }
    

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

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

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

    LocalReport _report;
    

    我花了一段时间才弄明白。。。希望这有帮助。。 祝你好运……)

        2
  •  0
  •   Mudassar Farooq    14 年前
    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;   
    

    希望它能回答你的问题。