Example #1
0
        /// <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 );
                }
            }
        }