如何将DataSource与某些选定的枚举值绑定?
我的枚举:
public enum Filters : byte
{
Filter1 = 1,
Filter2 = 2,
Filter3 = 4,
Filter4 = 8,
Filter5 = 16
}
所选值
public Filters SelectedFilters = Filters.Filter1 | Filters.Filter4;
如何将 SelectedFilters 变量绑定为数据源?
答案 0 :(得分:0)
使用:
public enum Filters : byte
{
Filter1 = 1,
Filter2 = 2,
Filter3 = 4,
Filter4 = 8,
Filter5 = 16
}
选择一些值:
public Filters SelectedFilters = Filters.Filter1 | Filters.Filter4;
我创建了一个可以解决我自己问题的方法:
public static List<T> EnumToList<T>(Enum someEnum)
{
List<T> list = new List<T>();
foreach (var it in Enum.GetValues(someEnum.GetType()))
{
if ((Convert.ToByte(it) & Convert.ToByte(someEnum)) != 0)
{
list.Add((T)it);
}
}
return list;
}
myRepeater.DataSource = EnumToList<Filters>(SelectedFilters);
答案 1 :(得分:0)
如果您希望能够将DropDownList的文本和值分开,请使用如下字典:
public static Dictionary<int, string> EnumToList(Type t)
{
Dictionary<int, string> list = new Dictionary<int, string>();
foreach (var v in Enum.GetValues(t))
{
list.Add((int)v, Enum.GetName(t, (int)v));
}
return list;
}
要使用它,对于LinqDataSource选择事件:
protected void ldsMyTypes_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
e.Result = EnumToList(typeof(Enums.FeedTypes));
}
答案 2 :(得分:0)
Enum.GetNames(typeof(Filters ));