2014-06-15 5 views
0

J'ai un ensemble d'énumérations définies dans un fichier .cs et je voulais lier ces énumérations à une liste déroulante dans une page aspx. J'ai besoin d'afficher cette liste déroulante dans 4places. Quelqu'un peut-il aider à ce sujet?Liaison d'énumération à la liste déroulante

+0

double possible de [? Comment lier Enum types à la DropDownList] (http://stackoverflow.com/questions/3098623/how-to-bind-enum-types-to-the-dropdownlist) –

Répondre

1

Utilisez le code suivant pour se lier menu déroulant avec enum

drp.DataSource = Enum.GetNames(typeof(MyEnum)); 
drp.DataBind(); 

Et si vous voulez obtenir la valeur sélectionnée

MyEnum empType= (MyEnum)Enum.Parse(drp.SelectedValue); 

Pour ajouter des articles de 2 ENUM dans un menu déroulant, vous pouvez

drp.DataSource = Enum.GetNames(typeof(MyEnum1)).Concat(Enum.GetNames(typeof(MyEnum2))); 
drp.DataBind(); 
+0

J'ai 3 enums, en ce sens que je veux listout 2 dans la liste déroulante. comment puis-je? – user3356020

+0

@ user3356020 vérifier le code mis à jour –

0

La meilleure façon de faire la liaison sélectionnée à des éléments spécifiques de la liste est en utilisant des attributs. Donc, créer un attribut qui peut être appliqué sur des éléments spécifiques dans le ENUM:

public class EnumBindableAttribute : Attribute 
{ 
} 

public enum ListEnum 
{ 
    [EnumBindable] 
    Item1, 
    Item2, 
    [EnumBindable] 
    Item3 
} 

J'ai spécifié l'attribut sur la Item1 et Élément3 Maintenant, je peux utiliser les éléments sélectionnés comme celui-ci (Vous pouvez généraliser le code suivant) :

protected void Page_Load(object sender, EventArgs e) 
    { 
     List<string> list = this.FetchBindableList(); 
     this.DropDownList1.DataSource = list; 
     this.DropDownList1.DataBind(); 

    } 

    private List<string> FetchBindableList() 
    { 
     List<string> list = new List<string>(); 
     FieldInfo[] fieldInfos = typeof(ListEnum).GetFields(); 
     foreach (var fieldInfo in fieldInfos) 
     { 
      Attribute attribute = fieldInfo.GetCustomAttribute(typeof(EnumBindableAttribute)); 
      if (attribute != null) 
      { 
       list.Add(fieldInfo.Name); 
      } 
     } 
     return list; 
    } 
Questions connexes