Revision: 31874
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at September 15, 2010 02:32 by jermeyz
Initial Code
/// <summary>
/// Converts an IEnumberable to a list of SelectListItems
/// </summary>
/// <typeparam name="T">Type of items in data</typeparam>
/// <typeparam name="TValueType">Type of property to be used for the Value property</typeparam>
/// <typeparam name="TTextType">Type of property to be used for the Textproperty</typeparam>
/// <param name="data">List to convert</param>
/// <param name="defaultItem">An optional extra listItem appeneded at the beginning of the list</param>
/// <param name="valueProperty">property of T to be used for the Value property</param>
/// <param name="textProperty">property of T to be used for the Text property</param>
/// <param name="selectedValue">Item in return value that should be selected</param>
/// <returns></returns>
public static List<SelectListItem> ToSelectList<T, TValueType, TTextType>(IEnumerable<T> data, SelectListItem defaultItem, Expression<Func<T, TValueType>> valueProperty, Expression<Func<T, TTextType>> textProperty, string selectedValue)
{
var list = new List<SelectListItem>();
if (defaultItem != null)
{
list.Add(defaultItem);
}
if (data == null)
return list;
var memberInfo = textProperty.Body as MemberExpression;
var textPropName = memberInfo.Member.Name;
var valmemberInfo = valueProperty.Body as MemberExpression;
var valuePropName = valmemberInfo.Member.Name;
Type t = typeof(T);
var textProp = t.GetProperties().Where(prop => prop.Name == textPropName).Single();
var valueProp = t.GetProperties().Where(prop => prop.Name == valuePropName).Single();
foreach (var item in data)
{
var text = textProp.GetValue(item, null);
var value = valueProp.GetValue(item, null);
list.Add(new SelectListItem()
{
Text = text.ToString(),
Value = value.ToString(),
Selected = (selectedValue == value.ToString())
}
);
}
return list;
}
Initial URL
Initial Description
Initial Title
Generic List bind to a drop down
Initial Tags
dropdown, c
Initial Language
C#