gpt4 book ai didi

winforms - RDLC动态子报表定义

转载 作者:行者123 更新时间:2023-12-02 19:15:41 34 4
gpt4 key购买 nike

这就是我要开始的内容。我有一份包含子报告的报告。该子报表的独特之处在于子报表 rdlc 的 XML 是在运行时生成的,然后将流提供给报表查看器。这几乎是按照我们需要的方式布置数据的唯一方法。该报告本身运行良好。

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

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

这是我迄今为止尝试过的:

  1. 当列表中的每个报表调用 SubreportProcessing 事件时,为我的流调用 LoadSubreportDefinition。我很确定这不起作用,因为您必须在报表渲染开始之前执行此操作?

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

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

最佳答案

您只需在调用LoadReportDefinition后立即调用LoadSubReportDefinition即可。

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

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

并且您有代表主报告 RDLC 的 stream1 和代表子报告 RDLC 的 stream2

您需要执行以下操作:

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

关于winforms - RDLC动态子报表定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10111773/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com