Winforms RDLC动态子报表定义

Winforms RDLC动态子报表定义,winforms,reportviewer,rdlc,Winforms,Reportviewer,Rdlc,这是我的开始。我有一份报告,里面有一个子报告。此子报表的独特之处在于,在运行时生成子报表rdlc的XML,然后将流提供给报表查看器。这几乎是按照我们需要的方式展示数据的唯一方法。这份报告本身效果很好 现在,我需要合并多个报告。我创建了一个带有列表的报告。列表中有一个子报告指向我的原始报告。但我一直在试图弄清楚如何应用动态子报表,因为它对于列表中的每个报表都是不同的流 为了达到这一点,我们已经在原始报告上做了很多工作,所以我真的不想重新思考我的方法 以下是我迄今为止所尝试的: 为列表中的每个报表调

这是我的开始。我有一份报告,里面有一个子报告。此子报表的独特之处在于,在运行时生成子报表rdlc的XML,然后将流提供给报表查看器。这几乎是按照我们需要的方式展示数据的唯一方法。这份报告本身效果很好

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

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

以下是我迄今为止所尝试的:

  • 为列表中的每个报表调用SubreportProcessing事件时,为my stream调用LoadSubreportDefinition。我很确定这是行不通的,因为你必须在报表呈现开始之前这样做

  • 找出一种为动态子报表的名称指定表达式的方法,以便我可以使用唯一ID调用LoadSubreportDefinition。例如,该名称类似于=“ImageSubreport”+参数!ID.值,我将调用LoadSubreportDefinition(“ImageSubreport1”,stream1),LoadSubreportDefinition(“ImageSubreport2”,stream2)。这在设计师看来是不可能的,所以我认为这是不可能的


  • 是否有某种方法可以分别生成每个报表,然后合并它们?

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

    假设主报告的定义指向子报告,如下所示:

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

    您正在使用哪个版本的Visual Studio和.Net版本进行构建。使用VS 2013和.Net 4.0,我遇到了相同的问题。它加载主报表,但不加载子报表。如何通过代码访问子报表名称属性以动态更改它?在主报表的rdlc子报表属性上设置的子报表的“名称”或“在子报表文本框出现时使用此报表”是?
    this.ReportViewer1.LocalReport.LoadReportDefinition(stream1);
    this.ReportViewer1.LocalReport.LoadSubreportDefinition("MySubReport", stream2);