Reportviewer表中的子报表

时间:2017-06-28 13:27:21

标签: c# reporting reportviewer subreport

我想在报表查看器中显示票证列表,并为每张票证和整个列表提供打印功能,并将整个列表分页为3个,5个或7个段。但我已经陷入了第一步:) 我在subreport的{​​{1}}中使用reportviwer。 这是我的WindowsFormApplicationMainReport

sub report and main report

这是我设置SubReport后的代码:

ReportEmbeddedResource

reportViewer1.LocalReport.DataSources.Clear(); ReportDataSource data = new ReportDataSource("DataSet1", dt); reportViewer1.LocalReport.DataSources.Add(data); this.reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(SubreportProcessingEventHandler); reportViewer1.RefreshReport(); 中的代码:

SubreportProcessingEventHandler

因为我的报告应该显示两张这两张 int i = 0; void SubreportProcessingEventHandler(object sender , SubreportProcessingEventArgs e) { DataRow dr = dt.Rows[i]; e.DataSources.Add(new ReportDataSource("DataSet1", (object)dr.Table)); i++; } lauches两张票。因此,我将表格的每一行(EventHandler)存储在一个名为{{1}的dt中}。看来DataRow只使用了第一个dr内容。结果就是重复的门票。这是输出:enter image description here

注意:我完全确定EventHandler中的值。之前已经过检查。

我知道我应该告诉DataRow每张门票使用不同的dr,但我不知道如何实现这一目标。 任何帮助将不胜感激。谢谢你提前。

1 个答案:

答案 0 :(得分:0)

我终于通过将参数从主报告传递到子报告来解决了这个问题 我像这样编辑了我的EventHandler

   void SubreportProcessingEventHandler(object sender , SubreportProcessingEventArgs e)
    {
        e.DataSources.Add(new ReportDataSource("DataSet1", dt));
    }