如何获取枚举值?

时间:2012-03-06 11:45:26

标签: c# asp.net .net

我已定义类似

的枚举
public Enum CompanyQuarters
{
     First=1,
     Second=2,
     Third=3,
     Fourth=4
}

我将它们绑定到下拉列表,如

ddlCompQuarter.DataSource = Enum.GetNames(typeof(CompanyQuarters));
ddlCompQuarter.DataBind();

现在我想获取下拉列表选择的值为了例如选择'秒'我想要获取2?

这不起作用

 int selectedVal = int.Parse(ddlCompQuarter.SelectedValue.ToString());

8 个答案:

答案 0 :(得分:7)

ActiveQuarters value = (ActiveQuarters)Enum.Parse(typeof(ActiveQuarters),ddlCompQuarter.SelectedValue.ToString());

或者如果您使用的是Dot Net Framework 4或更高版本,请参阅Enum.TryParse

ActiveQuarters value;
Enum.TryParse<ActiveQuarters>(ddlCompQuarter.SelectedValue.ToString(), out value);

答案 1 :(得分:3)

我在这里向您展示使用枚举的最佳方式:

public enum enumVIPBusinessPlanPaymentType {
    [Description("Monthly")]
    Monthly = 1,
    [Description("Paid In Full (PIF)")]
    PaidInFull = 2,
    [Description("Barter")]
    Barter = 3 }

并创建一个EnumHelper.cs类来读取其值或描述

public static Int32 GetIntValue(Enum en)
    {
        Type type = en.GetType();
        return TemplateControlExtension.GetInt32(null, en);
    }

public static string GetStringNameFromValue(Enum en)
    {
        Type type = en.GetType();
        MemberInfo[] info = type.GetMember(en.ToString());
        if (info != null && info.Length > 0)
        {
            object[] attrs = info[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
            if (attrs != null && attrs.Length > 0)
            {
               return ((DescriptionAttribute)attrs[0]).Description;
            }
        }
        return TemplateControlExtension.GetString(null, en);
    }

我希望它会喜欢你

答案 2 :(得分:2)

ActiveQuarters typedValue = (ActiveQuarters)Enum.Parse(typeof(ActiveQuarters), 
                                              ddlCompQuarter.SelectedValue);

// If you need numeric value
int numericValue = (int)typedValue;

答案 3 :(得分:2)

CompanyQuarters comp= (CompanyQuarters)Enum.Parse(ddlCompQuarter.SelectedValue); 

答案 4 :(得分:2)

您可以使用Enum.Parse

var val = (int)(ActiveQuarters)Enum.Parse(typeof(ActiveQuarters), 
                                          ddlCompQuarter.SelectedValue.ToString());

此外,我认为您的代码存在问题,您定义了ActiveQuarters枚举,并绑定了CompanyQuarters!。

答案 5 :(得分:2)

你必须改变你在那里获得名字的方式。

http://blogs.msdn.com/b/tims/archive/2004/04/02/106310.aspx

答案 6 :(得分:1)

你需要使用Enum.Parse然后你可以从ComboBox获取你的枚举

答案 7 :(得分:1)

您必须在绑定下拉列表时设置text和value属性。 对于值字段,您可以使用

<强> Enum.GetValues(typeof运算(EnumProvider.CompanyQuarters))