假设我有一个定义为“ReportDataSet.xsd”的数据集,其中包含一个名为“employee”的表。如何手动填写它,以便我可以将填充的 DataSet 返回到另一个函数,该函数将使用它来生成报告?这就是我现在正在做的事情,但我不确定它是否正确。
ReportDataSet ds = new ReportDataSet();
ReportDataSet.employeeRow empRow = ds.employee.AddemployeeRow(
employeeId, name, dateOfBirth, Address, Phone
);
return ds;
这就是问题所在: 我调试它并且可以在 VS2010 的调试器结果视图中看到数据,但是我使用 DataSet(如下)生成的水晶报告总是显示为空白。
EmployeeReport rpt = new EmployeeReport(); //EmployeeReport.rpt
ReportDataSet rds = GetDataSet();
rpt.Load();
rpt.SetDataSource(rds);
我没有使用查看器并立即将报告写入 PDF。生成的 PDF 包含模板(图像等),但没有数据。
FileStream fStream = new FileStream("c:\\quote.pdf", FileMode.CreateNew);
using (fStream)
{
MemoryStream oStream = (MemoryStream)rpt.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
byte[] data = oStream.ToArray();
fStream.Write(data, 0, data.Length);
}