/// <summary> /// Creates the dynamic attendance grid columns. /// </summary> /// <param name="groupBy">The group by.</param> private void CreateDynamicAttendanceGridColumns() { //ChartGroupBy groupBy = hfGroupBy.Value.ConvertToEnumOrNull<ChartGroupBy>() ?? ChartGroupBy.Week; ChartGroupBy groupBy = ChartGroupBy.Week; // Ensure the columns for the Attendance Checkmarks are there var attendanceSummaryFields = gAttendeesAttendance.Columns.OfType <BoolFromArrayField <DateTime> >().Where(a => a.DataField == "AttendanceSummary").ToList(); var existingSummaryDates = attendanceSummaryFields.Select(a => a.ArrayKey).ToList(); if (existingSummaryDates.Any(a => !_possibleAttendances.Contains(a)) || _possibleAttendances.Any(a => !existingSummaryDates.Contains(a))) { foreach (var oldField in attendanceSummaryFields.Reverse <BoolFromArrayField <DateTime> >()) { // remove all these fields if they have changed gAttendeesAttendance.Columns.Remove(oldField); } // limit to 520 checkmark columns so that we don't blow up the server (just in case they select every week for the last 100 years or something). var maxColumns = 520; foreach (var summaryDate in _possibleAttendances.Take(maxColumns)) { var boolFromArrayField = new BoolFromArrayField <DateTime>(); boolFromArrayField.ArrayKey = summaryDate; boolFromArrayField.DataField = "AttendanceSummary"; switch (groupBy) { case ChartGroupBy.Year: boolFromArrayField.HeaderText = summaryDate.ToString("yyyy"); break; case ChartGroupBy.Month: boolFromArrayField.HeaderText = summaryDate.ToString("MMM yyyy"); break; case ChartGroupBy.Week: boolFromArrayField.HeaderText = summaryDate.ToString("M/d/yy"); break; default: // shouldn't happen boolFromArrayField.HeaderText = summaryDate.ToString(); break; } gAttendeesAttendance.Columns.Add(boolFromArrayField); } } }
/// <summary> /// Creates the dynamic attendance grid columns. /// </summary> /// <param name="groupBy">The group by.</param> private void CreateDynamicAttendanceGridColumns() { ChartGroupBy groupBy = hfGroupBy.Value.ConvertToEnumOrNull<ChartGroupBy>() ?? ChartGroupBy.Week; // Ensure the columns for the Attendance Checkmarks are there var attendanceSummaryFields = gAttendeesAttendance.Columns.OfType<BoolFromArrayField<DateTime>>().Where( a => a.DataField == "AttendanceSummary" ).ToList(); var existingSummaryDates = attendanceSummaryFields.Select( a => a.ArrayKey ).ToList(); if ( existingSummaryDates.Any( a => !_possibleAttendances.Contains( a ) ) || _possibleAttendances.Any( a => !existingSummaryDates.Contains( a ) ) ) { foreach ( var oldField in attendanceSummaryFields.Reverse<BoolFromArrayField<DateTime>>() ) { // remove all these fields if they have changed gAttendeesAttendance.Columns.Remove( oldField ); } // limit to 520 checkmark columns so that we don't blow up the server (just in case they select every week for the last 100 years or something). var maxColumns = 520; foreach ( var summaryDate in _possibleAttendances.Take( maxColumns ) ) { var boolFromArrayField = new BoolFromArrayField<DateTime>(); boolFromArrayField.ArrayKey = summaryDate; boolFromArrayField.DataField = "AttendanceSummary"; switch ( groupBy ) { case ChartGroupBy.Year: boolFromArrayField.HeaderText = summaryDate.ToString( "yyyy" ); break; case ChartGroupBy.Month: boolFromArrayField.HeaderText = summaryDate.ToString( "MMM yyyy" ); break; case ChartGroupBy.Week: boolFromArrayField.HeaderText = summaryDate.ToShortDateString(); break; default: // shouldn't happen boolFromArrayField.HeaderText = summaryDate.ToString(); break; } gAttendeesAttendance.Columns.Add( boolFromArrayField ); } } }