我已定义类似
的枚举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());
答案 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)
你必须改变你在那里获得名字的方式。
答案 6 :(得分:1)
你需要使用Enum.Parse然后你可以从ComboBox获取你的枚举
答案 7 :(得分:1)
您必须在绑定下拉列表时设置text和value属性。 对于值字段,您可以使用
<强> Enum.GetValues(typeof运算(EnumProvider.CompanyQuarters))强>