gpt4 book ai didi

c# - 重复 RDLC ReportViewer 子报表

转载 作者:可可西里 更新时间:2023-11-01 03:02:05 26 4
gpt4 key购买 nike

我是 RDLC 的新手,所以如果我遗漏了一些明显的东西,请原谅我。

我有一些数据需要重复,基于链接到主报表的 1:Many 数据集。它不能以表格方式显示,因为客户希望以特定方式对其进行布局,因此不再使用 Tablix 控件。在这个主报告中,我有许多基于 1:1 数据集的子报告,这些都很好。我为这个新数据集创建了一个子报表,并将其添加到主 RDLC 报表中。一切正常,但它只包含数据集的第一条记录。

是否可以为数据集中的每条记录重复此子报表?我认为让我感到困惑的是主要 RDLC 没有专门加载各个子报表的代码,所以我看不到任何明显的地方可以包含循环或任何东西。

最佳答案

如果您没有特殊需求,我认为了解您可以在 Tablix 单元格中放置一个 Rectangle 然后将其用作简单控件的容器很重要如 TextBoxLineImage 等,按您的需要布局。

如果您仍然需要使用子报表,您可以在 Tablix 单元格中放置一个 SubReport 并解决 LocalReport.SubreportProcessing 中的任何问题。处理子报表时发生的事件。

如果您有很多记录,您可以使用单个 Dataset 并在 SubreportProcessing 事件中过滤它,使用子报表 Parameters您已经在 Designer Mode 中进行了设置。

Private Sub SubreportProcessingHandler(sender As Object, e As SubreportProcessingEventArgs)

Dim dvFiltered As New DataView(Me.YourDataSet.Tables(0))

dvFiltered.RowFilter = "Parameter1 = " & CInt(e.Parameters.Item("yourParameter1").Values(0)) & " AND " _
& "Parameter2 = '" & CStr(e.Parameters.Item("yourParameter2").Values(0)) & "'"

e.DataSources.Add(New ReportDataSource("YourDataSourceName", dvFiltered.ToTable("YourDataSourceName")))

End Sub

例如,使用包含主数据和明细数据的DataSet,您可以构建按IdMaster 分组的主报表,并将子报表放在明细部分。

main report

这是子报表:请注意 DataSet 与主报表相同,但我们还需要 2 个 Parameters(IdMasterIdRow) 以显示正确的数据。

sub report

在主报表中,您需要将子报表Parameters 链接到DataSet 的实际值。

sub report parameter

然后,最重要的部分:SubreportProcessingHandler 事件。主报表中子报表的每个实例都会触发此事件,因此如果您有 100 行/100 个子报表,此事件将被触发 100 次:每次您需要指定要显示的数据,因此您必须过滤DataSet 使用上一步中定义的 2 个 Parameters(IdMasterIdRow)并填充来自 master 的值报告。

Private Sub SubreportProcessingHandler(sender As Object, e As SubreportProcessingEventArgs)

Dim dvTest As New DataView(Me.dsTest.Tables(0))
dvTest.RowFilter = "IdMaster = " & CInt(e.Parameters.Item("parIdMaster").Values(0)) & " AND " _
& "IdRow = " & CInt(e.Parameters.Item("parIdRow").Values(0))

e.DataSources.Add(New ReportDataSource("DataSet_TEST", dvTest.ToTable("DataSet_TEST")))

End Sub

这是结果:

result

正如我在回答开头所述,如果您没有特殊需求,可以使用 Rectangle 而不是 SubReport。对于此示例,您可以使用绿色 Rectangle 作为容器获得相同的结果。

rectangle

关于c# - 重复 RDLC ReportViewer 子报表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52427791/

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