2015-02-04 10 views
5

Das scheint, als sollte es trivial sein, aber ich habe Schwierigkeiten.Wie fülle ich ein Dataset in einem SSRS-Unterbericht?

Ich habe einen Hauptbericht, ich habe Füllen Datensätze wurde wie in folge ReportViewer.aspx.cs.

ReportViewer.LocalReport.ReportPath = "~/SummaryReport.rdlc"; 
ReportDataSource requestsSource = new ReportDataSource(); 
requestsSource.Name = "RequestHeadersDataSet"; 
requestsSource.Value = GetSummaryRequestsDataSet(); // Returns DT 
ReportViewer.LocalReport.DataSources.Add(requestsSource); 

Ich habe auch einen subreport, die in einer Tabelle in meinem Hauptbericht innerhalb einer Reihe-Gruppe verwiesen wird. Der Datensatz hat die Spalte RequestName. Ich gebe dies über die Eigenschaften des Unterberichts auf der Registerkarte Parameter weiter.

Sobald ich dem Unterbericht ein Dataset hinzufüge, erhalte ich einen Fehler: Data retrieval failed for the subreport. Nicht überraschend, bedenkt, dass ich es nie mit irgendetwas gefüllt habe.

Aber wie kann ich die Subreport-Datenquelle hinzufügen? Der Berichtspfad für ReportViewer wird auf meinen Hauptbericht festgelegt.

Beide verwenden den gleichen Datensatz, wenn dies von Bedeutung ist.

Antwort

3

Sie müssen SubreportProcessing Event verwenden, um Ihre Datenquelle festzulegen. Siehe auch folgende walkthrough.

ReportViewer.LocalReport.SubreportProcessing += 
       new SubreportProcessingEventHandler(exampleSubreportProcessingEventHandler); 

    void exampleSubreportProcessingEventHandler(object sender, SubreportProcessingEventArgs e) 
    { 
     e.DataSources.Add(new ReportDataSource("SubReportDataSet", GetSummaryRequestsDataSet())); 
    } 

Von bereitgestellten Link SubreportProcessing Event.

The SubreportProcessing event is triggered for every instance of the subreport in the main report, and not just for each subreport definition. If a report contains multiple subreports instances from the same report definition, this event is triggered for each instance.

If the main report has several subreports, you can examine the ReportPath property of the SubreportProcessingEventArgs class to determine which subreport is being processed and supply data for that subreport.

+0

Danke für die Antwort. Wie funktioniert das, wenn ich mehrere Unterberichte mit jeweils einem eigenen Datensatz habe? – Rail24

+0

@ Rail24 aktualisierte Antwort, um Ihren Kommentar zu beantworten –

Verwandte Themen