如何使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"?非常感谢。

如何使ReportViewer显示多个页面(例如,每个DataRow显示一个页面)

好吧,我想明白了:

  1. 将List元素添加到报告中,并将其拉伸以填充报告正文
  2. 将此List元素的Tablix链接到我的数据集
  3. 在List元素中添加一个TextBox元素
  4. 选择TextBox元素的表达式:=字段!客户代码。价值
  5. 右键单击报表体外部,选择〖查看〗-〖分组〗
  6. 添加行组
  7. 在"行组属性"常规"->"在CustomerCode字段上添加分组"
  8. 在"行组"属性"分页符"->"选择分页符选项"->"在组的每个实例之间"
  9. 如果报表总是生成一个包含空字段的额外页面,请在XML查看器中打开.rdlc文件,找到分页符标记并将其删除

很明显,不是吗?