我有一个(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
}
我情不自禁地感觉到我从根本上走错了方向。有什么想法吗?
答案 0 :(得分:1)
对我来说,从Report Viewer 9.0(2008)迁移到Report Viewer 11.0(2012)后会出现问题。
答案 1 :(得分:0)
继续回答Stephane CLARISSE,这里是来源
的摘录经过一些探索和修补我的代码后,我找到了一个解决方法。解决方案是在子报表中创建一个虚拟参数,然后需要将其绑定到tablix数据集中的字段。只要子报表参数和tablix数据集字段都是类型兼容的,任何字段都会执行。您不必对子报表中的参数执行任何操作,但现在SSRS显示同一子报表的多个实例,Tablix中的每一行都有一个单独的实例。
这似乎是SSRS中的一个错误,解决方法是创建一个虚拟参数,其中包含从主报表传递的任何数据类型。以下是它为我解决问题的方法
主报表上的,我刚刚传递了任何字段,用于与dummy参数的数据类型匹配的dummy参数。就我而言,它是整数(eventID)