CheckboxList using Enum
References:
- http://joelabrahamsson.com/enum-properties-with-episerver/
- http://world.episerver.com/blogs/Linus-Ekstrom/Dates/2013/12/SingleMultiple-selection-in-EPiServer-75/
My Code
public class EnumMultipleSelectionFactory<TEnum> : ISelectionFactory { public IEnumerable<ISelectItem> GetSelections( ExtendedMetadata metadata) { var values = Enum.GetValues(typeof(TEnum)); List<ISelectItem> items = new List<ISelectItem>(); foreach (var value in values) { items.Add(new SelectItem { Text = GetValueName(value), Value = value.ToString() }); } return items; } private string GetValueName(object value) { var staticName = Enum.GetName(typeof(TEnum), value); string localizationPath = string.Format( "/property/enum/{0}/{1}", typeof(TEnum).Name.ToLowerInvariant(), staticName.ToLowerInvariant()); string localizedName; if (LocalizationService.Current.TryGetString( localizationPath, out localizedName)) { return localizedName; } return staticName; } } public class EventItemPage : SitePageData { public enum EventCategoryValues { Arts, Business, Community, Festivals, Kids, Recreation, Sports } [Display( GroupName = SystemTabNames.Content, Order = 1030)] [SelectMany(SelectionFactoryType = typeof(EnumMultipleSelectionFactory<EventCategoryValues>))] public virtual string EventCategories { get; set; } }
I've tried implementing this myself, and I've got it to write data to the database, but not to read data back out of the database.
See this post on StackOverflow for more details of what I did, but do you have any other ideas?