如何使ReportViewer显示多个页面(例如,每个DataRow显示一个页面)
本文关键字:显示 DataRow 一个 每个 何使 ReportViewer 例如 | 更新日期: 2024-09-21 18:19:02
我是MS报告的新手。我试图实现的是制作一个简单的报告,该报告将由DataTable
(以编程方式制作)填充。其思想是将每个页面的数据分类为来自DataRow
的值。即报告页面1
将从DataTable.Rows[0]
获得其TextBox
值,报告页面2
将显示来自DataTable.Rows[1]
的值等。页数=DataRows
的数量。
我已经编写了一个WinForms应用程序,它从SQL中获取DataTable
,并根据用户提供的参数对其进行筛选,然后显示一个Report。
然后,我创建了一个名为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"
?非常感谢。
好吧,我想明白了:
- 将List元素添加到报告中,并将其拉伸以填充报告正文
- 将此List元素的Tablix链接到我的数据集
- 在List元素中添加一个TextBox元素
- 选择TextBox元素的表达式:=字段!客户代码。价值
- 右键单击报表体外部,选择〖查看〗-〖分组〗
- 添加行组
- 在"行组属性"常规"->"在CustomerCode字段上添加分组"
- 在"行组"属性"分页符"->"选择分页符选项"->"在组的每个实例之间"
- 如果报表总是生成一个包含空字段的额外页面,请在XML查看器中打开.rdlc文件,找到分页符标记并将其删除
很明显,不是吗?