Inte vet jag hur men jag lyckades på nått sätt få ihop det! :)
BusinessRegisterStatusService statusService = new BusinessRegisterStatusService();
IEnumerable<BusinessRegisterStatus> statuses = statusService.GetStatuses(UserInfo.CurrentSite);
dropDownListStatus.Items.AddRange(GetListItemCollection(statuses, "{0} - {1}", "Code,Name", "{0}", "ID"));
//dropDownListStatus.DataBind();
public ListItem[] GetListItemCollection<T>(IEnumerable<T> collection,
string textFormat, string textColumn, string valueFormat, string valueColumn)
{
PropertyInfo[] pi = typeof(T).GetProperties();
string[] textColumns = textColumn.Split(',');
string[] valueColumns = valueColumn.Split(',');
List<ListItem> listItems = new List<ListItem>();
ListItem listItem;
foreach (var item in collection)
{
listItem = new ListItem();
listItem.Text = string.Format(textFormat, GetValueFromProperty(pi, item, textColumns));
listItem.Value = string.Format(valueFormat, GetValueFromProperty(pi, item, valueColumns));
listItems.Add(listItem);
}
return listItems.ToArray();
}
private object[] GetValueFromProperty<T>(PropertyInfo[] pi, T obj, string[] props)
{
List<object> items = new List<object>();
foreach (var p in pi)
{
foreach (string s in props)
{
if (p.Name == s)
items.Add(p.GetValue(obj, null));
}
}
return items.ToArray();
}
Det vore dock roligt att få lite kommentarer på koden, om den går att förfina! :)