0

我有一个带有 Razor 的 asp.net mvc4 应用程序,我想在其中添加一个报告Crystal Reports。所以我创建了一个文件夹 AspxPages 并添加了一个Aspx视图。此外,我的模型中有我想查看的类 Result 是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显示列表中的最后一个对象,而不是不同页面中的所有列表。

那么问题是什么?我该如何解决?

4

1 回答 1

1

像bump sais一样,您正在尝试用数据填充参数,当然报告将只使用最后一条记录。

您正在寻找的是设置报告文档的数据源,应该是这样的:

rd.SetDataSource(model);

在这里,您有一个完整的示例,如何将通用集合传递给水晶。带有通用集合的水晶报表,这篇文章应该对你有所帮助。

于 2013-10-27T11:38:53.313 回答