public enum SendInfoStateEnum
{
[Description("等待提交")]
等待提交 = 1,
[Description("等待審核")]
等待審核 = 2,
審核成功 = 3,
審核失敗 = 4,
正在發送 = 5,
}
綁定枚舉到dropdownlist方法如下:
調用如:BindEnumToDropdownList(typeof(SendInfoStateEnum), ddlSendState, new ListItem("--請選擇--", "-1"), "-1");
重點是Enum.GetValues(enumType)、Enum.GetName(enumType, i) 2個方法。
/// <summary> /// 綁定枚舉到dropdownlist /// </summary> /// <param name="enumType">枚舉類型</param> /// <param name="ddl">dropdownlist</param> /// <param name="li">初始化第一個選項,可為null</param> /// <param name="selectValue">選中項的值</param> public static void BindEnumToDropdownList(Type enumType, DropDownList ddl, ListItem firstItem, string selectValue) { ddl.Items.Clear(); if (firstItem != null) { ddl.Items.Add(firstItem); } foreach (int i in Enum.GetValues(enumType)) { ListItem li2 = new ListItem(Enum.GetName(enumType, i), i.ToString()); if (li2.Value.Equals(selectValue)) { li2.Selected = true; } ddl.Items.Add(li2); } }
獲取枚舉值的描述標簽方法:
調用如:GetDescriptionByName(SendInfoStateEnum.等待提交);
/// <summary> /// get enum description by name /// </summary> /// <typeparam name="T">enum type</typeparam> /// <param name="enumItemName">the enum name</param> /// <returns>description string</returns> public static string GetDescriptionByName<T>(this T enumItemName) { FieldInfo fi = enumItemName.GetType().GetField(enumItemName.ToString()); DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes( typeof(DescriptionAttribute), false); if (attributes != null && attributes.Length > 0) { return attributes[0].Description; } else { return enumItemName.ToString(); } }