如何让 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报表,如何动态选择要显示的字段,就是选哪几列就
Microsoft.ReportViewer.WinForms.V15 与 .NET Core 3.1 不兼容 - 如何在 WPF Core 中显示 RDLC?