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

 纪筱陌_ 发布于 2023-02-10 14:33

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

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

然后我创建了一个空的虚拟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 个回答
  • 好的,我想出来了:

      将一个List元素添加到报表中并将其拉伸以填充报表正文.

      将此List元素的Tablix链接到我的DataSet.

      在List元素中添加TextBox元素.

      选择TextBox元素的表达式:= Fields!CustomerCode.Value

      右键单击外部报表正文,然后选择"查看" - >"分组".

      添加行组.

      在行组属性常规 - >在CustomerCode字段上添加分组.

      在行组属性分页 - >选择分页符选项 - >在组的每个实例之间.

      如果report始终生成一个包含空字段的额外页面 - 在XML查看器中打开.rdlc文件,找到分页符标记并将其删除.

    很明显,不是吗?

    2023-02-10 14:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有