RDLC动态子报告定义

时间:2012-04-11 18:26:16

标签: winforms reportviewer rdlc

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

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

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

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

  1. 为列表中的每个报表调用SubreportProcessing事件时,为我的流调用LoadSubreportDefinition。我很确定这不起作用,因为你必须在报告渲染开始之前这样做吗?

  2. 找出一种为动态子报表的Name指定表达式的方法,以便我可以使用唯一ID调用LoadSubreportDefinition。例如,Name就像=“ImageSubreport”+ Parameters!ID.Value,我会调用LoadSubreportDefinition(“ImageSubreport1”,stream1),LoadSubreportDefinition(“ImageSubreport2”,stream2)。这似乎在设计师中是不可能的,所以我认为这是不可能的。

  3. 是否有某种方法可以单独生成每个报告,然后合并它们?

1 个答案:

答案 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);