这就是我的开始。我有一个包含子报告的报告。使该子报告唯一的原因是子报告rdlc的XML在运行时生成,然后流提供给报告查看器。这几乎是以我们需要的方式布局数据的唯一方法。这份报告本身很好。
现在我想要结合多个报告。我创建了一个包含列表的报告。在列表中是指向我的原始报告的子报告。但是我一直试图弄清楚如何应用动态子报表,因为它是列表中每个报表的不同流。
我们已经在原始报告上做了很多工作来达到这一点,所以我真的不想重新考虑我的方法。
这是我到目前为止所尝试的内容:
为列表中的每个报表调用SubreportProcessing事件时,为我的流调用LoadSubreportDefinition。我很确定这不起作用,因为你必须在报告渲染开始之前这样做吗?
找出一种为动态子报表的Name指定表达式的方法,以便我可以使用唯一ID调用LoadSubreportDefinition。例如,Name就像=“ImageSubreport”+ Parameters!ID.Value,我会调用LoadSubreportDefinition(“ImageSubreport1”,stream1),LoadSubreportDefinition(“ImageSubreport2”,stream2)。这似乎在设计师中是不可能的,所以我认为这是不可能的。
是否有某种方法可以单独生成每个报告,然后合并它们?
答案 0 :(得分:2)
您只需在调用LoadReportDefinition后立即调用LoadSubReportDefinition。
让我们假设主报表的定义指向子报表,如下所示:
<Subreport Name="Subreport1">
<ReportName>MySubReport</ReportName>
...
</Subreport>
您有stream1
代表主要报告RDLC,stream2
代表子报告RDLC。
您需要执行以下操作:
this.ReportViewer1.LocalReport.LoadReportDefinition(stream1);
this.ReportViewer1.LocalReport.LoadSubreportDefinition("MySubReport", stream2);