为什么 stimulsoft 报告中不显示列数据?

问题描述 投票:0回答:1

我将类列表传递给 Bussines 对象内的 Stimulsoft 报告。 我的报告文件中没有任何问题。 当我渲染报告变量时,填充当前变量并重复列列表,但数据不显示。 我的操作没有任何错误! 类中的列类型为 Double,报表字段的类型为 Float。 动作代码:

 public ActionResult PumpsStatusDailySummarySnapshot()
        {
            try
            {
                DateTime dateTimeStart = (DateTime)Session[_sessionList.PumpsStatusDailySummaryDateTimeStart];
                DateTime dateTimeEnd = (DateTime)Session[_sessionList.PumpsStatusDailySummaryDateTimeEnd];
                string time = Session[_sessionList.PumpsStatusDailySummaryTime] as string;

                List<PumpsStatu> pumpsStatus = new List<PumpsStatu>();

                int pumpCount;
                using (SPMSEntities db = new SPMSEntities())
                {
                    pumpCount = db.Packages.First().TotalPumpCount;
                }
                if (HttpContext.Cache[_cacheList.PumpsStatusDailySummary] == null)
                {
                    using (SPMSEntities db = new SPMSEntities())
                    {
                        pumpsStatus = db.PumpsStatus.ToList();
                        HttpContext.Cache.Insert(_cacheList.PumpsStatusDailySummary, pumpsStatus, null, DateTime.Now.AddMinutes(15),
                            Cache.NoSlidingExpiration);
                    }
                }
                else
                {
                    pumpsStatus = HttpContext.Cache[_cacheList.PumpsStatusDailySummary] as List<PumpsStatu>;
                }
                pumpsStatus = pumpsStatus.Where(x => x.Date >= dateTimeStart && x.Date <= dateTimeEnd).ToList();

                //Collect report data
                List<PumpsStatusDailySummaryClass> list = new List<PumpsStatusDailySummaryClass>();
                List<PumpsStatusDailySummaryClass> reportList = new List<PumpsStatusDailySummaryClass>();
                DateTime dateTimeTemp = dateTimeStart;
                int preDay = -1;
                int prePumpCountInWork = 1;
                long currentId = 0;
                long lastItemId = pumpsStatus.Last().Id;
                int runTime = 0;

                foreach (var item in pumpsStatus)
                {
                    currentId = item.Id;
                    //تاریخ امروز ؟ 
                    int dayOfYear = item.Date.DayOfYear;
                    if (preDay == -1)
                    {
                        preDay = dayOfYear - 1;
                    }
                    //======================================================================
                    if (item.Frequency1 > 0)
                    {
                        PumpsStatusDailySummaryClass dailySummary = new PumpsStatusDailySummaryClass();
                        dailySummary.Current = item.Current1;
                        dailySummary.Efficiency = item.Efficiency1;  //calc
                        dailySummary.Frequency = item.Frequency1;
                        //dailySummary.RunTime = 1;
                        dailySummary.Power = item.Power1;
                        dailySummary.Flow =
                            item.Frequency1 == 41 ? 65 :
                            item.Frequency1 == 42 ? 69 :
                            item.Frequency1 == 43 ? 74 :
                            item.Frequency1 == 44 ? 78 :
                            item.Frequency1 == 45 ? 85 :
                            item.Frequency1 == 46 ? 88 :
                            item.Frequency1 == 47 ? 92 :
                            item.Frequency1 == 48 ? 97 :
                            item.Frequency1 == 49 ? 101 : 50;
                        dailySummary.SolarDate = item.SolarDateTime;
                        dailySummary.Id = (int)item.Id;
                        list.Add(dailySummary);
                    }
                    //======================================================================


                    //Fill date
                    if (dayOfYear - preDay > 1 || dayOfYear < preDay || item.Id == lastItemId)
                    {
                        if (list.Count == 0)
                        {
                            continue;
                        }
                        PumpsStatusDailySummaryClass dailySummary = new PumpsStatusDailySummaryClass();
                        dailySummary.Current = Math.Round(list.Average(x => x.Current), 1);
                        dailySummary.Efficiency = Math.Round(list.Average(x => x.Efficiency), 1);
                        dailySummary.Frequency = Math.Round(list.Average(x => x.Frequency), 1);
                        dailySummary.Power = Math.Round(list.Average(x => x.Power), 1);
                        dailySummary.RunTime = list.Count / 60;
                        dailySummary.SolarDate = list.First().SolarDate;
                        dailySummary.Flow = Math.Round(list.Average(x => x.Flow), 1);
                        reportList.Add(dailySummary);
                        preDay = dayOfYear - 1;
                        list.Clear();
                    }

                    //dailySummary.Date = 
                    dateTimeTemp = dateTimeTemp.AddDays(1);

                }


                string userFullName;
                string PackageName;
                using (SPMSEntities db = new SPMSEntities())
                {
                    string userId = User.Identity.GetUserId();
                    Profile profile = db.Profiles.First(x => x.UserId == userId);
                    userFullName = profile.FirstName + " " + profile.LastName;
                    PackageName = db.Packages.First().Name;
                }
                StiReport report = new StiReport();
                report.Load(Server.MapPath("~/Content/Reports/PumpsStatusDailySummary.mrt"));
                report.Dictionary.Variables.Add(new StiVariable("Params", "TodayPersianDate", Convertor.ToPersianDate(DateTime.Now)));
                report.Dictionary.Variables.Add(new StiVariable("Params", "StartPersianDate", Convertor.ToPersianDate(dateTimeStart)));
                report.Dictionary.Variables.Add(new StiVariable("Params", "EndPersianDate", Convertor.ToPersianDate(dateTimeEnd)));
                report.Dictionary.Variables.Add(new StiVariable("Params", "UserFullName", userFullName));
                report.Dictionary.Variables.Add(new StiVariable("Params", "PackageName", PackageName));
                report.RegBusinessObject("Data", reportList);
                report.Compile();
                return StiMvcViewer.GetReportSnapshotResult(report);
            }
            catch (Exception e)
            {
                HelperStoreSqlLog.WriteError(e, "PumpsStatusDailySummarySnapshot");
                return View();
            }
        }
c# asp.net-mvc stimulsoft
1个回答
0
投票

我猜你的问题出在你的报告(mrt)文件中,因为日期列也是空的。请检查每个字段的文本框。例如,功率字段文本框应如下所示:{Data.Power}

© www.soinside.com 2019 - 2024. All rights reserved.