代码之家  ›  专栏  ›  技术社区  ›  Koorosh

Reportviewer表中的子报表

  •  0
  • Koorosh  · 技术社区  · 8 年前

    我想在报表查看器中显示一个票据列表,并为每个票据和整个列表提供打印功能,还可以将整个列表分页为3、5或7段。但我只停留在第一步:) 我正在使用 subreport reportviwer WindowsFormApplication 这是我的 MainReport SubReport :

    sub report and main report

    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++;
        }
    

    EventHandler 发射两次。因此,我存储了表的每一行( dt )在a中 DataRow 其名称为 dr .看起来是这样的 只使用第一个 数据行 所容纳之物结果是重复的罚单。以下是输出: enter image description here

    我完全相信 博士

    我知道我应该如何告诉 子报表 DataSource 每一张票,但我不知道如何实现这个目标。 任何帮助都将不胜感激。提前谢谢你。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Koorosh    8 年前

    通过将参数从主报表传递到子报表,我最终解决了这个问题 我编辑了我的 EventHandler 这样地:

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