Dynamic Drop down list editable by content authors using ISelectionFactory & Property List
On one of my recent projects, we wanted the ability for content authors to manage a list of items in the dropdown through the CMS. Though, it's simple to create a list of items that can be retrieved from a constants class or an appsetting.config, it does require developer to make that change. This also means there needs to be a deployment to production for a simple name/value change in a dropdown.
To get around this standard implementation, we implemented a simple Property List on the Start Page and referenced the property in the ISelectionFactory implementation to get the key value pair.
The dropdown list can now be managed by the content authors without relying on the developer to make a change.
Here's the code:
public class AccountPropertiesFactory : ISelectionFactory
{
public IEnumerable<ISelectItem> GetSelections(ExtendedMetadata metadata)
{
var contentRepository = ServiceLocator.Current.GetInstance<IContentLoader>();
var startPage = contentRepository.Get<StartPage>(ContentReference.StartPage);
var selectItems = new List<SelectItem>();
foreach(var accountProperty in startPage.AccountTypePropertyList)
{
selectItems.Add( new SelectItem()
{
Text = accountProperty.Text,
Value = accountProperty.Text
}
);
}
return selectItems.ToArray();
}
}
Thanks Aniket
You saved my day...