这看起来应该是微不足道的,但我遇到了困难。
我有一个主要报告,我一直在填充数据集,如下所示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 的报告路径设置为我的主报告。
两者都使用相同的数据集(如果这有任何后果的话)。
你需要使用子报表处理事件设置您的数据源。参见以下内容演练 also.
ReportViewer.LocalReport.SubreportProcessing +=
new SubreportProcessingEventHandler(exampleSubreportProcessingEventHandler);
void exampleSubreportProcessingEventHandler(object sender, SubreportProcessingEventArgs e)
{
e.DataSources.Add(new ReportDataSource("SubReportDataSet", GetSummaryRequestsDataSet()));
}
从提供的链接子报表处理事件.
SubreportProcessing 事件会为每个实例触发
主报告中的子报告,而不仅仅是每个子报告
定义。如果报表包含多个子报表实例
相同的报表定义,每个实例都会触发此事件。
如果主报告有多个子报告,您可以检查
SubreportProcessingEventArgs 类的 ReportPath 属性
确定正在处理哪个子报表并为其提供数据
子报告。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)