I guess I'm just lost as to how I can do this if it is even possible. I have my poco that I would like to bind to the datasource of the table. But I can't figure out how to create the table/crosstable layout to look like the attached image. The problem I'm facing is that I may have n approaches with each approach having n lengths. All approaches have the same number of lengths. Example, I have five approaches with 4 lengths each. From there I have a count for each hour for each approach/length.
Any help on how I can dynamically create the table?
Robert
Here is my model:
Any help on how I can dynamically create the table?
Robert
Here is my model:
public class CrosstabClassificationModel { public class ApproachModel { public ApproachModel(List<int> lengthGroups) { Lengths = new List<LengthModel>(); int prev = 0; foreach(int i in lengthGroups) { Lengths.Add(new LengthModel() { Min = prev, Max = i }); prev = i + 1; } } public string Name { get; set; } public ApproachTypes ApproachType { get; set; } public List<LengthModel> Lengths { get; private set; } public void Add(int length, DateTime time) { foreach(var l in Lengths) { if(length.IsBetween(l.Min, l.Max)) { l.Add(time); break; } } } public override string ToString() { return Name; } } public class LengthModel { public LengthModel() { Events = new List<EventModel>(); } public string Title { get { if(Max == int.MaxValue) return string.Format("{0} and greater", Min); else return string.Format("{0} - {1}'", Min, Max); } } internal int Min { get; set; } internal int Max { get; set; } public List<EventModel> Events { get; private set; } internal void Add(DateTime time) { var @event = Events.FirstOrDefault(x => x.Time == time); if(@event == null) { @event = new EventModel() { Count = 0, Time = time }; Events.Add(@event); } @event.Count++; } public override string ToString() { return Title; } } public class EventModel { public DateTime Time { get; set; } public int Count { get; set; } public override string ToString() { return Time.ToShortTimeString() + " Total: " + Count.ToString(); } } public CrosstabClassificationModel() { Approaches = new List<ApproachModel>(); } public DateTime Date { get; set; } public List<ApproachModel> Approaches { get; private set; } public ApproachModel this[string Name] { get { return Approaches.FirstOrDefault(x => x.Name == Name); } } public override string ToString() { return Date.ToShortDateString(); } }