将数据源与某些枚举值绑定

如何使用某些选定的枚举值绑定DataSource?

我的枚举:

public enum Filters : byte { Filter1 = 1, Filter2 = 2, Filter3 = 4, Filter4 = 8, Filter5 = 16 } 

选定值:

 public Filters SelectedFilters = Filters.Filter1 | Filters.Filter4; 

如何将SelectedFilters变量绑定为数据源?

使用:

 public enum Filters : byte { Filter1 = 1, Filter2 = 2, Filter3 = 4, Filter4 = 8, Filter5 = 16 } 

并选择一些值:

 public Filters SelectedFilters = Filters.Filter1 | Filters.Filter4; 

我创建了一个可以解决我自己问题的方法:

 public static List EnumToList(Enum someEnum) { List list = new List(); 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(SelectedFilters); 

如果您希望能够将DropDownList的Text和Value分开,请使用如下的Dictionary:

 public static Dictionary EnumToList(Type t) { Dictionary list = new Dictionary(); 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)); } 
  Enum.GetNames(typeof(Filters ));