2009-07-24 6 views
0

Wie kann ich eine DataSource mit einigen ausgewählten Enum-Werten verbinden?Binden einer Datenquelle mit einigen Enum-Werten

Meine Enum:

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

Ausgewählte Werte:

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

Wie kann ich binden den SelectedFilters Variable als Datenquelle?

+3

Sie könnten die Enum mit dem Flags beschriften möchten. –

Antwort

0

Verwendung:

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

Und einige Werte Auswahl:

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

ich eine Methode geschaffen, die meine eigene Frage lösen:

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); 
0

Wenn Sie in der Lage sein wollen Wenn der Text und der Wert der DropDownList getrennt sind, verwenden Sie ein Dictionary wie dieses:

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; 
} 

es zu verwenden, im Falle eines LinqDataSource Selecting-Ereignis:

protected void ldsMyTypes_Selecting(object sender, LinqDataSourceSelectEventArgs e) 
{ 
    e.Result = EnumToList(typeof(Enums.FeedTypes)); 
} 
0
Enum.GetNames(typeof(Filters)); 
Verwandte Themen