我有一个带Razor的asp.net mvc4应用程序,其中我想添加一个报告Crystal Reports
。所以我创建了一个文件夹AspxPages,我添加了一个Aspx
视图。此外,我在我的模型中有一个类结果,我想像这样查看List<Result>
:
List<Element> elem_list = notre_chef.Get_ListElement_By_Project(id_project);
List<Result> model = new List<Result>();
foreach (Element e in elem_list)
{
Result _r = new Result(e.Id_element);
model.Add(_r);
}
string strReportName;
string rapportName;
strReportName = "Current.rpt";
rapportName = "Resultat Actuel du test";
ReportDocument rd = new ReportDocument();
// the Rapport path "Rpts/strReportName"
string strRptPath =
System.Web.HttpContext.Current.Server.MapPath("~/") + "Rpts//"
+ strReportName;
rd.Load(strRptPath);
foreach (Result res in model)
{
rd.SetParameterValue("category", res.Catégorie);
rd.SetParameterValue("sf", res.Sous_fonctionnalité);
rd.SetParameterValue("concept", res.Concept);
rd.SetParameterValue("expert", res.Expert);
rd.SetParameterValue("property", res.Propriétés);
rd.SetParameterValue("f", res.Fonction);
rd.SetParameterValue("avis", res.Avis);
rd.SetParameterValue("justification", res.Justification);
if (final == 0)
{
rd.SetParameterValue("titre", "Resultat actuel du test");
}
else
{
rd.SetParameterValue("titre", "Resultat final du test");
}
}
rd.ExportToHttpResponse(ExportFormatType.PortableDocFormat,
System.Web.HttpContext.Current.Response, false, rapportName);
return RedirectToAction("Display_Chef_Attempt", new{id_project = id_project});
在报告中,我添加了必填字段。我的问题是,报告中只显示列表中的最后一个对象Result
而不是不同页面中的所有列表。
那么问题是什么?我该如何解决?
答案 0 :(得分:1)
您要查找的是设置报表文档的数据源,应该是这样的:
rd.SetDataSource(model);
在这里,您可以获得如何将通用集合传递给crystal的完整示例。 Crystal Report with generic Collection,本文应该对您有帮助。