我是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”?谢谢.
解决方法:
好的,我想出来了:
>将一个List元素添加到报表中并将其拉伸以填充报表正文.
>将此List元素的Tablix链接到我的DataSet.
>在List元素中添加TextBox元素.
>选择TextBox元素的表达式:= Fields!CustomerCode.Value
>右键单击外部报表正文,然后选择查看 – >分组.
>添加行组.
>在行组属性中常规 – >在CustomerCode字段上添加分组.
>在行组属性分页符中 – >选择分页符选项 – >在每个组的实例之间.
>如果报告始终生成包含空字段的额外页面 – 在XML查看器中打开.rdlc文件,找到分页符标记并将其删除.
很明显,不是吗?