Как заполнить набор данных в подотчете SSRS?

Кажется, это должно быть тривиально, но у меня возникают трудности.

У меня есть основной отчет, я заполняю наборы данных следующим образом 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);

У меня также есть подотчет, на который есть ссылка в моем основном отчете в группе строк в таблице. В наборе данных есть столбец RequestName, Я передаю это через Свойства подотчета на вкладке Параметры.

Как только я добавляю набор данных в подотчет, я получаю сообщение об ошибке: Data retrieval failed for the subreport. Неудивительно, учитывая, что я никогда ничего не наполнял.

Но как я могу добавить к источнику данных подотчета? Путь к отчету для ReportViewer установлен на мой основной отчет.

Оба используют один и тот же набор данных, если это имеет какое-либо значение.

1 ответ

Вам нужно использовать SubreportProcessing Event, чтобы установить источник данных. Смотрите также следующее прохождение.

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

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

Из предоставленной ссылки SubreportProcessing Event.

Событие SubreportProcessing запускается для каждого экземпляра вложенного отчета в основном отчете, а не только для каждого определения вложенного отчета. Если отчет содержит несколько экземпляров вложенных отчетов из одного определения отчета, это событие вызывается для каждого экземпляра.

Если у основного отчета есть несколько вложенных отчетов, вы можете проверить свойство ReportPath класса SubreportProcessingEventArgs, чтобы определить, какой вложенный отчет обрабатывается, и предоставить данные для этого подчиненного отчета.

Другие вопросы по тегам