2012-03-06 5 views
4

Я определил перечисление какКак получить значение перечисления?

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

Я связываю их выпадающий список, как

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

Теперь я хочу, чтобы принести DROPDOWNLIST выбранное значение Для, например, для выбора «второго» Я хотел бы принести 2 ?

Это не работает

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

КСТАТИ Что такое 'CompanyQuarters'? (вы предоставили только ActiveQuarters) – sll

+0

Мой плохой, просто опечатка (исправленная запись) –

+0

Возможный дубликат [Как получить значение перечисления по имени] (http://stackoverflow.com/questions/540746/how-to-get -enum-value-by-keyname) –

ответ

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); 
+0

Спасибо за отличный отклик. –

1

вам нужно использовать Enum.Parse, а затем вы можете получить перечисление из ComboBox

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

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

Вы можете использовать Enum.Parse

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

Кроме того, я думаю, что ваш код имеет проблемы, вы определили ActiveQuarters перечисление и свяжешь CompanyQuarters!.

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

Я надеюсь, что это будет как вы

+0

Ницца, мне нравится ваш подход, очень чистый. –

+0

@DamienJoe: Спасибо, чувак ... –

1

Вы должны установить текст и значение свойство в момент привязки выпадающего списка. Для поля значения можно использовать

Enum.GetValues ​​(TYPEOF (EnumProvider.CompanyQuarters))

Смежные вопросы