2012-07-20 88 views
0

我有一个(rdlc)报告,其中包含一个表内的子报表。对于生成的子报表的每个实例,将触发LocalReport.SubreportProcessing事件,该事件位于agreement with the documentation中。LocalReport.SubReportProcessing事件忽略后续数据表

但是,对于这些事件中的每一个,看起来只有分配的第一个DataTable在报告内使用。我可以验证ReportFactory.ReturnNextDataTable正在为每一行返回适当的DataTable,但是看起来DataTable的第一个实例正在重复多次。

我已经尝试清除每次调用的报表数据源(使用e.DataSources.Clear()),但这没有什么区别。

这里是我的代码:

void AddData(object sender, SubreportProcessingEventArgs e) 
     { 
      DataTable merged = ReportFactory.ReturnNextDataTable; 
      e.DataSources.Add(new ReportDataSource("RATES", merged)); //Subsequent DataTables ignored  
     } 

我不禁感慨,我要对此根本上走错了路。有任何想法吗?

回答

0

在延续斯特凡克拉丽丝的答案这里是从源头上提取

一些闲逛,并与我的代码修修补补之后,我发现了一个解决方法。解决方案是在子报表中创建一个虚拟参数,然后您需要绑定到tablix数据集中的字段。只要subreport参数和tablix数据集字段都是类型兼容的,任何字段都会执行。您不必对子报表中的参数执行任何操作,但现在SSRS会显示同一子报表的多个实例,对于Tablix中的每一行,都会单独显示一个实例。

这似乎是SSRS中的一个错误,解决方法是创建一个具有从主报告传递的任何数据类型的虚拟参数。这里是如何解决这个问题对我来说

我在报表 dummy parameter

在主报告中增加了一个虚拟参数,我刚刚通过的任何领域,随着虚拟参数的数据类型相匹配的虚拟参数。在我而言,它是整数(EVENTID)

main report properties