web-dev-qa-db-fra.com

Comment lier des types énumérés à la DropDownList?

Si j'ai l'énumération suivante 

public enum EmployeeType
{
    Manager = 1,
    TeamLeader,
    Senior,
    Junior
}

et j'ai DropDownList et je veux lier cette énumération EmployeeType à DropDownList, y a-t-il un moyen de le faire?

37
Hotmoil

si vous avez un objet DropDownList appelé ddl, vous pouvez le faire comme ci-dessous 

ddl.DataSource = Enum.GetNames(typeof(EmployeeType));
ddl.DataBind();

si vous voulez la valeur Enum Retour à la sélection ....

 EmployeeType empType = (EmployeeType)Enum.Parse(typeof(EmployeeType), ddl.SelectedValue);
68
Amr Badawy

vous pouvez utiliser l'expression lambda 

        ddl.DataSource = Enum.GetNames(typeof(EmployeeType)).
        Select(o => new {Text = o, Value = (byte)(Enum.Parse(typeof(EmployeeType),o))});
        ddl.DataTextField = "Text";
        ddl.DataValueField = "Value";
        ddl.DataBind();

ou Linq

        ddl.DataSource = from Filters n in Enum.GetValues(typeof(EmployeeType))
                select new { Text = n, Value = Convert.ToByte(n) };
        ddl.DataTextField = "Text";
        ddl.DataValueField = "Value";
        ddl.DataBind();
12
ni3.net

Voici une autre approche:

Array itemNames = System.Enum.GetNames(typeof(EmployeeType));
foreach (String name in itemNames)
{
    //get the enum item value
    Int32 value = (Int32)Enum.Parse(typeof(EmployeeType), name);
    ListItem listItem = new ListItem(name, value.ToString());
    ddlEnumBind.Items.Add(listItem);
}

j'ai utilisé ce lien pour le faire:

http://www.codeproject.com/Tips/303564/Binding-DropDownList-Using-List-Collection-Enum-an

5
SantiCarta

J'ai écrit une fonction d'aide pour me donner un dictionnaire que je peux relier: 

public static Dictionary<int, string> GetDictionaryFromEnum<T>()
{

    string[] names = Enum.GetNames(typeof(T));

    Array keysTemp = Enum.GetValues(typeof(T));
    dynamic keys = keysTemp.Cast<int>();

    dynamic dictionary = keys.Zip(names, (k, v) => new {
        Key = k,
        Value = v
    }).ToDictionary(x => x.Key, x => x.Value);

    return dictionary;
}
1
Kirk Wilson

Encore plus simple:

 ddl.DataSource = Enum.GetValues(typeof(EmployeeType));

Puis pour revenir en arrière:

EmployeeType etSelected = (EmployeeType)ddl.SelectedValue;
0
Jack P.