【问题标题】:How to make ReportViewer display multiple pages (e.g. one page per DataRow)?如何让 ReportViewer 显示多页(例如,每个 DataRow 一页)?
【发布时间】:2014-01-02 03:06:51
【问题描述】:

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

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

然后我创建了一个名为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"?谢谢。

【问题讨论】:

    标签: c# visual-studio datatable pagination reportviewer


    【解决方案1】:

    好的,我想通了:

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

    很明显,不是吗?

    【讨论】:

    • 这是哪个visual studio,因为vs2008没有这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    相关资源
    最近更新 更多