LocalReport.SubReportProcessing事件忽略了后续的DataTables

时间:2012-07-20 08:28:51

标签: c# .net reporting-services reporting rdlc

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

但是,对于其中每个事件,似乎只在报告中使用了分配的第一个DataTable 。我可以验证ReportFactory.ReturnNextDataTable是否为每一行返回了相应的DataTable,但看起来DataTable的第一个实例正在重复多次。

我已经尝试为每次调用清除报告DataSources(使用e.DataSources.Clear()),但这没有任何区别。

这是我的代码:

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

我情不自禁地感觉到我从根本上走错了方向。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我找到了解决方案: http://social.msdn.microsoft.com/Forums/es-PY/sqlreportingservices/thread/04f72cea-caea-48c5-82e9-f6b2b962717d

对我来说,从Report Viewer 9.0(2008)迁移到Report Viewer 11.0(2012)后会出现问题。

答案 1 :(得分:0)

继续回答Stephane CLARISSE,这里是来源

的摘录
  

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

这似乎是SSRS中的一个错误,解决方法是创建一个虚拟参数,其中包含从主报表传递的任何数据类型。以下是它为我解决问题的方法

我在子报表中添加了一个虚拟参数 dummy parameter

主报表上的

,我刚刚传递了任何字段,用于与dummy参数的数据类型匹配的dummy参数。就我而言,它是整数(eventID)

main report properties