将枚举绑定到下拉列表

时间:2014-06-15 07:28:37

标签: c#

我在.cs文件中定义了一组枚举,我想将这些枚举绑定到aspx页面的下拉列表中。我需要在4个位置显示该下拉列表。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

使用以下代码将下拉列表绑定到enum

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

如果您想获得所选值

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

要在一个下拉列表中附加2个枚举的项目,您可以

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

答案 1 :(得分:0)

对列表中的特定项进行选定绑定的最佳方法是使用属性。因此,创建一个可应用于枚举中特定项目的属性:

 public class EnumBindableAttribute : Attribute
{
}

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

我已经在Item1和Item3上指定了属性,现在我可以使用这样的选定项目(您可以概括以下代码):

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