Как заполнить набор данных в подотчете 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, чтобы определить, какой вложенный отчет обрабатывается, и предоставить данные для этого подчиненного отчета.