Как передать данные в BusinessObject в отчете стимулсофт? - PullRequest
0 голосов
/ 22 сентября 2019

Мне нужно передать данные для файла отчета activulsoft через код.

public ActionResult PackageCommandPrint(string startDate, string endDate, int profileId)
    {
        try
        {
            List<PackageCommand> commands = new List<PackageCommand>();
            StiReport report = new StiReport();
            report.Load(Server.MapPath("~/Content/Reports/PackageCommand.mrt"));
            if (HttpContext.Cache["PackageCommands"] == null)
            {
                using (SPMSEntities db = new SPMSEntities())
                {
                    commands = db.PackageCommands.ToList();
                    HttpContext.Cache.Insert("PackageCommands", commands, null, DateTime.Now.AddMinutes(15), Cache.NoSlidingExpiration);
                }
            }
            else
            {
                commands = HttpContext.Cache["PackageCommands"] as List<PackageCommand>;
            }
            string userFullName;
            using (SPMSEntities db = new SPMSEntities())
            {
                Profile profile = db.Profiles.Find(profileId);
                userFullName = profile.FirstName + " " + profile.LastName;
            }
            report.Dictionary.Variables.Add(new StiVariable("Params", "TodayPersianDate", Convertor.ToPersianDate(DateTime.Now)));
            report.Dictionary.Variables.Add(new StiVariable("Params", "UserFullName", userFullName));
            report.RegBusinessObject("Data", commands);                                                                                                      
            report.Compile();
            return StiMvcViewer.GetReportSnapshotResult(report);
        }
        catch (Exception e)
        {
            HelperStoreSqlLog.WriteError(e, "PackageCommand");
            return View();
        }
    }

Файл отчета: https://drive.google.com/file/d/1A8CLRYAoIQNXPVJkqNucrxJeW1yxJFg1/view?usp=sharing

Когда я пытаюсь получить отчет, появляется сообщение об ошибке:

System.ArgumentNullException: значение не может быть нулевым.Имя параметра: значение в System.Enum.TryParseEnum (тип enumType, строковое значение, логическое ignoreCase, EnumResult & parseResult) в System.Enum.Parse (тип enumType, строковое значение, логическое ignoreCase) в Stimulsoft.Report.MvcSMM(HttpContextBase httpContext, отчет StiReport) по адресу Stimulsoft.Report.Mvc.StiMvcViewer.GetReportSnapsh otResult (отчет StiReport) в SPMS.Controllers.ReportController.PackageCommandPr int (Строка startDate, SPD \ SPD: DMS, DSC: String endDMS, DMS):\ Controllers \ ReportController .cs: строка 83

строка 83: return StiMvcViewer.GetReportSnapshotResult(report);

В чем проблема?Я пытаюсь проверить этот код пустым файлом отчета, но снова получаю сообщение об ошибке.enter image description here

Бритва:

@using Stimulsoft.Report.Mvc  
@{
    Layout = null;
}
@Html.Stimulsoft().StiMvcViewer(new StiMvcViewerOptions()
{
    Localization = "~/Content/Reports/Localization/fa.xml",
    Theme = StiTheme.Office2013,
    ActionGetReportSnapshot = "PackageCommandPrint",
    ActionViewerEvent = "PackageCommandViewer",
    ServerCacheMode = StiCacheMode.None 
})
...