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

时间:2013-12-14 09:58:02

标签: c# visual-studio datatable pagination reportviewer

我是MS报道的新手。我想要实现的是制作一个简单的报告,该报告将从DataTable(以编程方式)填写。我们的想法是将每个页面的数据分配到DataRow的值。即报告页面1将从TextBox获取其DataTable.Rows[0]值,报告页面2将显示DataTable.Rows[1]的值等。页数= {{1} }}

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

然后我创建了一个名为DataTable的空虚拟DataSet,其中包含我将需要的所有字段名称。然后我做了ComplianceFormDataSet,用这个表达式为.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 个答案:

答案 0 :(得分:10)

好的,我想出来了:

  1. 将一个List元素添加到报表中并将其拉伸以填充报表正文。
  2. 将此List元素的Tablix链接到我的DataSet。
  3. 在List元素中添加TextBox元素。
  4. 选择TextBox元素的表达式:= Fields!CustomerCode.Value
  5. 右键单击外部报告正文,然后选择查看 - >分组。
  6. 添加一个行组。
  7. 在行组属性中常规 - >在CustomerCode字段上添加分组。
  8. 在行组属性分页符中 - >选择分页符选项 - >在每个组的实例之间。
  9. 如果报告总是生成一个包含空字段的额外页面 - 在XML查看器中打开.rdlc文件,找到分页符标记并将其删除。
  10. 很明显,不是吗?