将数据源与某些枚举值绑定
如何使用某些选定的枚举值绑定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 ));