2014-11-04 50 views
0

我有一种方法将报告呈现为PDF,以便它可以附加到电子邮件中。代码如下:ReportViewer渲染器不会重置为新数据

也能正常工作的第一次,但如果用户产生另一个报告和发送电子邮件,附加到电子邮件的报告是第一位的产生,而不是当前的。

例如,用户打开软件,创建采购订单#3,并生成PDF并通过电子邮件正确发送。用户然后创建一个新的采购订单而不退出该软件,#4。提交#4后,附在电子邮件中的PDF是从#3开始的,就像ReportViewer没有清除以前的数据。

即使使用ReportViewer界面生成新报告,它也不会影响附加到电子邮件的内容。我试图清除ReportViewer之间的渲染无济于事。

我在这里错过了什么?

回答

0

我可以通过复位ReportDataSource功能的每一次迭代来纠正问题:

 this.DataTable1TableAdapter.Fill(this.reportdataset.DataTable1, ponum); 
     DataTable dt = new DataTable(); 
     dt = DataTable1TableAdapter.GetData(ponum); 
     Microsoft.Reporting.WinForms.ReportDataSource rprtDTSource = new Microsoft.Reporting.WinForms.ReportDataSource(dt.TableName, dt); 


     reportViewer1.LocalReport.DataSources.Add(rprtDTSource); 

     Warning[] warnings; 
     string[] streamids; 
     string mimeType; 
     string encoding; 
     string filenameExtension; 
     string filename = "Purchase Requisition " + ponum.ToString() + ".pdf"; 

     byte[] bytes = reportViewer1.LocalReport.Render(
      "PDF", null, out mimeType, out encoding, out filenameExtension, 
      out streamids, out warnings); 
     try 
     { 
      using (FileStream fs = new FileStream(filename, FileMode.Create)) 
      { 
       fs.Write(bytes, 0, bytes.Length); 
       fs.Flush();    
      } 

     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 

     return filename;