Je voulais documenter ce pour quelqu'un d'autre qui se présente à la recherche de la réponse:
private readonly CrystalReportViewer reportViewer = new CrystalReportViewer();
...
this.reportViewer.ReportSource = @"C:\PathToReport\Report.rpt";
using (var crystalReport = new ReportDocument())
{
foreach (DataRow row in dataSet.Tables[0].Rows)
{
var customerId = int.Parse(row["customerId"].ToString());
var isCurrent = bool.Parse(row["isCurrent"].ToString());
var totalSales = int.Parse(row["totalSales"].ToString());
// generate the report for each row
this.CreateReport(customerId, isCurrent, totalSales, crystalReport);
}
}
private void CreateReport(int customerId, bool isCurrent, int totalSales, ReportDocument crystalReport)
{
crystalReport.Load(this.reportViewer.ReportSource.ToString());
crystalReport.SetParameterValue("customerId", customerId);
crystalReport.SetParameterValue("isCurrent", isCurrent);
crystalReport.SetParameterValue("TotalSales", totalSales);
var fileName = string.Format("EndOfYear_{0}_{1}.pdf", customerId, isCurrent ? 1 : 0);
var outputPath = Path.Combine(this.txtOutputDirectory.Text, fileName);
crystalReport.ExportToDisk(ExportFormatType.PortableDocFormat, outputPath);
}
Références:
CrystalDecisions.CrystalReports.Design CrystalDecisions.CrystalReports.Engine
Ce code donne un nom de fichier comme ceci:
« EndOfYear_123456_1.pdf »
Il est certainement possible de générer l'objet de rapport pour chaque ligne, plutôt que de le passer, mais ralentit les choses un peu. Réutiliser le même objet de rapport n'a pas d'impact négatif autant que je puisse le voir, et fait avancer les choses dix fois plus vite. La seule autre chose dont vous avez besoin est de savoir comment préparer un rapport Crystal, ce qui dépasse la portée de ce tutoriel. Bonne chance!
Cela semble être exactement ce que je cherche, mais qu'est-ce que vous construisez 'dataSet' de? Désolé si c'est une question idiote; Je suis un peu nouveau à ça. – Eiketsu
Je viens de le construire à partir d'une requête ADO plain-vanilla ... si je le faisais aujourd'hui, j'aurais probablement une liste d'entités à la place. –