如何获取枚举值?
我将它们绑定到下拉像如何获取枚举值?
ddlCompQuarter.DataSource = Enum.GetNames(typeof(CompanyQuarters));
ddlCompQuarter.DataBind();
现在我想获取下拉列表选择的值。对于例如用于选择列表我已经定义枚举像
public Enum CompanyQuarters
{
First=1,
Second=2,
Third=3,
Fourth=4
}
“第二”我喜欢取2 ?
这不起作用
int selectedVal = int.Parse(ddlCompQuarter.SelectedValue.ToString());
ActiveQuarters value = (ActiveQuarters)Enum.Parse(typeof(ActiveQuarters),ddlCompQuarter.SelectedValue.ToString());
让你的枚举,或者如果您使用的是点NET框架4或更高,看到Enum.TryParse
ActiveQuarters value;
Enum.TryParse<ActiveQuarters>(ddlCompQuarter.SelectedValue.ToString(), out value);
感谢您的出色反应。 – 2012-03-06 17:38:51
你需要使用Enum.Parse,然后你可以从组合框
ActiveQuarters typedValue = (ActiveQuarters)Enum.Parse(typeof(ActiveQuarters),
ddlCompQuarter.SelectedValue);
// If you need numeric value
int numericValue = (int)typedValue;
CompanyQuarters comp= (CompanyQuarters)Enum.Parse(ddlCompQuarter.SelectedValue);
您可以使用Enum.Parse
var val = (int)(ActiveQuarters)Enum.Parse(typeof(ActiveQuarters),
ddlCompQuarter.SelectedValue.ToString());
而且我觉得你的代码有问题,你定义ActiveQuarters
枚举和绑定CompanyQuarters
!
在这里,我向您展示使用枚举的最佳方式:
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);
}
我希望它会像你
不错,我喜欢你的做法,很干净。 – 2012-03-06 18:02:47
@DamienJoe:谢谢Dude ... – 2012-03-07 13:34:35
你必须设置文本和值属性在绑定时下拉。 对于值字段,你可以使用
Enum.GetValues(typeof运算(EnumProvider.CompanyQuarters))
顺便说一句,什么是'CompanyQuarters'? (你刚刚提供了ActiveQuarters) – sll 2012-03-06 11:54:21
我的不好,只是一个错字(更正后) – 2012-03-06 12:01:34
可能重复的[如何通过键名获取枚举值](http://stackoverflow.com/questions/540746/how-to-get -enum-value-by-keyname) – 2012-03-10 07:06:12