首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ASP.NET中将枚举绑定到DropDownList控件?

如何在ASP.NET中将枚举绑定到DropDownList控件?
EN

Stack Overflow用户
提问于 2008-09-15 07:03:32
回答 26查看 179.3K关注 0票数 131

假设我有以下简单的枚举:

enum Response
{
    Yes = 1,
    No = 2,
    Maybe = 3
}

如何将此枚举绑定到DropDownList控件,以便在列表中显示描述,并在选择一个选项后检索相关的数值(1,2,3)?

EN

回答 26

Stack Overflow用户

回答已采纳

发布于 2008-09-15 07:10:23

我可能不会

绑定

因为数据是枚举,所以它在编译后不会改变(除非我有一个枚举

stoopid

时刻)。

最好只遍历枚举:

Dim itemValues As Array = System.Enum.GetValues(GetType(Response))
Dim itemNames As Array = System.Enum.GetNames(GetType(Response))

For i As Integer = 0 To itemNames.Length - 1
    Dim item As New ListItem(itemNames(i), itemValues(i))
    dropdownlist.Items.Add(item)
Next

或者在C#中也是如此

Array itemValues = System.Enum.GetValues(typeof(Response));
Array itemNames = System.Enum.GetNames(typeof(Response));

for (int i = 0; i <= itemNames.Length - 1 ; i++) {
    ListItem item = new ListItem(itemNames[i], itemValues[i]);
    dropdownlist.Items.Add(item);
}
票数 113
EN

Stack Overflow用户

发布于 2008-09-15 09:31:50

使用以下实用程序类

要获得一个

(枚举值和名称对)

枚举

;然后将

IDictionary

绑定到可绑定控件。

public static class Enumeration
{
    public static IDictionary GetAll() where TEnum: struct
    {
        var enumerationType = typeof (TEnum);

        if (!enumerationType.IsEnum)
            throw new ArgumentException("Enumeration type is expected.");

        var dictionary = new Dictionary();

        foreach (int value in Enum.GetValues(enumerationType))
        {
            var name = Enum.GetName(enumerationType, value);
            dictionary.Add(value, name);
        }

        return dictionary;
    }
}

示例:

使用实用程序类将枚举数据绑定到控件

ddlResponse.DataSource = Enumeration.GetAll();
ddlResponse.DataTextField = "Value";
ddlResponse.DataValueField = "Key";
ddlResponse.DataBind();
票数 71
EN

Stack Overflow用户

发布于 2010-03-10 19:58:02

我用它来

ASP.NET MVC

Html.DropDownListFor(o => o.EnumProperty, Enum.GetValues(typeof(enumtype)).Cast().Select(x => new SelectListItem { Text = x.ToString(), Value = ((int)x).ToString() }))
票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档