ReportViewer渲染器不会重置为新数据
问题描述:
我有一种方法将报告呈现为PDF,以便它可以附加到电子邮件中。代码如下:ReportViewer渲染器不会重置为新数据
也能正常工作的第一次,但如果用户产生另一个报告和发送电子邮件,附加到电子邮件的报告是第一位的产生,而不是当前的。
例如,用户打开软件,创建采购订单#3,并生成PDF并通过电子邮件正确发送。用户然后创建一个新的采购订单而不退出该软件,#4。提交#4后,附在电子邮件中的PDF是从#3开始的,就像ReportViewer
没有清除以前的数据。
即使使用ReportViewer
界面生成新报告,它也不会影响附加到电子邮件的内容。我试图清除ReportViewer
之间的渲染无济于事。
我在这里错过了什么?
答
我可以通过复位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;