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

Tao*_*que 3 c# datatable pagination reportviewer visual-studio

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

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

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

=Fields!CustomerCode.Value
Run Code Online (Sandbox Code Playgroud)

以下是将数据传递给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();
Run Code Online (Sandbox Code Playgroud)

当我构建这个时,得到一个报告,一页说"Blah1".如何让它渲染两个页面:一个用于"Blah1",第二个用于"Blah2"?谢谢.

Tao*_*que 10

好的,我想出来了:

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

很明显,不是吗?