winforms – RDLC动态子报告定义

这是我开始的.我有一个包含子报告的报告.使该子报告唯一的原因是子报告rdlc的
XML在运行时生成,然后流提供给报告查看器.这几乎是以我们需要的方式布局数据的唯一方法.这份报告本身很好.

现在我想要结合多个报告.我创建了一个包含列表的报告.在列表中是指向我的原始报告的子报告.但是我一直试图弄清楚如何应用动态子报表,因为它是列表中每个报表的不同流.

我们已经在原始报告上做了很多工作来达到这一点,所以我真的不想重新考虑我的方法.

这是我到目前为止所尝试的:

>为列表中的每个报表调用SubreportProcessing事件时,为我的流调用LoadSubreportDefinition.我很确定这不起作用,因为你必须在报告渲染开始之前这样做吗?
>找出一种为动态子报表的Name指定表达式的方法,以便我可以使用唯一ID调用LoadSubreportDefinition.例如,Name就像=“ImageSubreport”参数!ID.Value,我会调用LoadSubreportDefinition(“ImageSubreport1”,stream1),LoadSubreportDefinition(“ImageSubreport2”,stream2).这似乎在设计师中是不可能的,所以我认为这是不可能的.

有没有办法分别生成每个报告,然后合并它们?

最佳答案 您只需在调用LoadReportDefinition后立即调用LoadSubReportDefinition.

让我们假设主报表的定义指向子报表,如下所示:

<Subreport Name="Subreport1">
    <ReportName>MySubReport</ReportName>
    ...
</Subreport>

你有stream1代表主报告RDLC,stream2代表子报告RDLC.

你需要做一些事情:

this.ReportViewer1.LocalReport.LoadReportDefinition(stream1);
this.ReportViewer1.LocalReport.LoadSubreportDefinition("MySubReport", stream2);
点赞