我将类列表传递给 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();
}
}
我猜你的问题出在你的报告(mrt)文件中,因为日期列也是空的。请检查每个字段的文本框。例如,功率字段文本框应如下所示:{Data.Power}