/// <summary> /// Returns the field's current value(s) /// </summary> /// <param name="parentControl">The parent control.</param> /// <param name="value">Information about the value</param> /// <param name="configurationValues">The configuration values.</param> /// <param name="condensed">Flag indicating if the value should be condensed (i.e. for use in a grid column)</param> /// <returns></returns> public override string FormatValue( Control parentControl, string value, Dictionary<string, ConfigurationValue> configurationValues, bool condensed ) { string formattedValue = string.Empty; if ( !string.IsNullOrWhiteSpace( value ) ) { var names = new List<string>(); var guids = new List<Guid>(); foreach ( string guidValue in value.Split( new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries ) ) { Guid? guid = guidValue.AsGuidOrNull(); if ( guid.HasValue ) { guids.Add( guid.Value ); } } if ( guids.Any() ) { var schedules = new ScheduleService( new RockContext() ).Queryable().Where( a => guids.Contains( a.Guid ) ); if ( schedules.Any() ) { formattedValue = string.Join( ", ", ( from schedule in schedules select schedule.Name ).ToArray() ); } } } return base.FormatValue( parentControl, formattedValue, null, condensed ); }
/// <summary> /// Reads new values entered by the user for the field /// </summary> /// <param name="control">Parent control that controls were added to in the CreateEditControl() method</param> /// <param name="configurationValues">The configuration values.</param> /// <returns></returns> public override string GetEditValue( Control control, Dictionary<string, ConfigurationValue> configurationValues ) { var picker = control as SchedulePicker; string result = null; if ( picker != null ) { var ids = picker.SelectedValuesAsInt(); var schedules = new ScheduleService( new RockContext() ).Queryable().Where( a => ids.Contains( a.Id ) ); if ( schedules.Any() ) { result = schedules.Select( s => s.Guid.ToString() ).ToList().AsDelimited( "," ); } } return result; }