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

时间:2009-07-24 14:05:23

标签: c# enums

如何将DataSource与某些选定的枚举值绑定?

我的枚举:

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

所选值

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

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

3 个答案:

答案 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 ));