如何让 ReportViewer 显示多页(例如,每个 DataRow 一页)?

Posted

技术标签:

【中文标题】如何让 ReportViewer 显示多页(例如,每个 DataRow 一页)?【英文标题】:How to make ReportViewer display multiple pages (e.g. one page per DataRow)? 【发布时间】:2014-01-02 03:06:51 【问题描述】:

我是 MS 报告的新手。我想要实现的是制作一个简单的报告,该报告将由DataTable 填充(以编程方式制作)。这个想法是将每个页面的数据分配给来自DataRow 的值。 IE。报告页面1 将从DataTable.Rows[0] 获取其TextBox 值,报告页面2 将显示来自DataTable.Rows[1] 等的值。页数=DataRows 的数量。

我编写了一个 WinForms 应用程序,该应用程序从 SQL 获取 DataTable 并根据用户提供的参数对其进行过滤,然后显示报告。

然后我创建了一个名为ComplianceFormDataSet 的空虚拟对象DataSet,其中包含我将进一步需要的所有字段名称。然后我做了一个.rdlc,用这个表达式添加了一个TextBox

=Fields!CustomerCode.Value

以下是将数据传递给 ReportViewer 背后的逻辑:

DataTable MainDataTable = new DataTable();
MainDataTable.Columns.Add("CustomerCode", typeof(string));
MainDataTable.Rows.Add("Blah1");
MainDataTable.Rows.Add("Blah2");
ReportDataSource MainDataSource = new ReportDataSource("ComplianceFormDataSet", MainDataTable);
MainReportViewer.LocalReport.DataSources.Clear();
MainReportViewer.LocalReport.DataSources.Add(MainDataSource);
MainReportViewer.RefreshReport();

当我构建这个时,得到一份报告,其中一页写着"Blah1"。如何让它呈现两页:一页带有"Blah1",第二页带有"Blah2"?谢谢。

【问题讨论】:

【参考方案1】:

好的,我想通了:

    向报表添加一个 List 元素并将其拉伸以填充报表正文。 将此 List 元素的 Tablix 链接到我的 DataSet。 在 List 元素中添加一个 TextBox 元素。 选择 TextBox 元素的表达式:=Fields!CustomerCode.Value 右键单击报表主体外部并选择查看 -> 分组。 添加行组。 在行组属性常规中 -> 在 CustomerCode 字段上添加分组。 在行组属性分页符 -> 选择分页选项 -> 在组的每个实例之间。 如果报表总是生成带有空字段的额外页面 - 在 XML 查看器中打开 .rdlc 文件,找到分页符并将其删除。

很明显,不是吗?

【讨论】:

这是哪个visual studio,因为vs2008没有这个

以上是关于如何让 ReportViewer 显示多页(例如,每个 DataRow 一页)?的主要内容,如果未能解决你的问题,请参考以下文章

c#语言,winform生成reportviewer报表,如何动态选择要显示的字段,就是选哪几列就

如何设置REPORTVIEWER控件工具条显示中文

Microsoft.ReportViewer.WinForms.V15 与 .NET Core 3.1 不兼容 - 如何在 WPF Core 中显示 RDLC?

word中,怎样让两个表格并排放在一起一页纸

c#的reportViewer控件

C# form程序中reportviewer控件怎么使用?