/// <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 guids = value.SplitDelimitedValues(); var categories = new CategoryService( new RockContext() ).Queryable().Where( a => guids.Contains( a.Guid.ToString() ) ); if ( categories.Any() ) { formattedValue = string.Join( ", ", ( from category in categories select category.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 CategoryPicker; string result = null; if ( picker != null ) { var guids = new List<Guid>(); var ids = picker.SelectedValuesAsInt(); var categories = new CategoryService( new RockContext() ).Queryable().Where( c => ids.Contains( c.Id ) ); if ( categories.Any() ) { guids = categories.Select( c => c.Guid ).ToList(); } result = string.Join( ",", guids ); } return result; }