0

我有一个(rdlc)报告,其中包含一个表中的子报告。对于生成的每个子报表实例,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      
        }

我不禁觉得我从根本上走错了路。有任何想法吗?

4

2 回答 2

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) 后会出现问题。

于 2013-03-05T13:12:38.570 回答
1

继续 Stephane CLARISSE 的回答,这里是源代码的摘录

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

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

我在子报告中添加了一个虚拟参数 虚拟参数

在主报告上,我只是传递了与虚拟参数的数据类型匹配的虚拟参数的任何字段。就我而言,它是整数(eventID)

主要报告属性

于 2016-12-29T05:43:29.973 回答