/// <summary> /// Заполнение списков /// </summary> private void FillLists() { GenderDdl.DataSource = EnumNamesHelper.EnumToList <Genders>(); GenderDdl.DataTextField = "Text"; GenderDdl.DataValueField = "Value"; GenderDdl.DataBind(); }
/// <summary> /// Обратная конвертация /// </summary> /// <param name="value">Значение</param> /// <param name="targetType">Целевой тип</param> /// <param name="parameter">Параметр конвертации</param> /// <param name="culture">Локаль</param> /// <returns></returns> public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { try { return(EnumNamesHelper.GetEnumByDescription(value.ToStr(), (Enum)parameter)); } catch (Exception) { return(DoNothing); } }
/// <summary> /// Конвертация значений /// </summary> /// <param name="value">Значение</param> /// <param name="targetType">Целевой тип</param> /// <param name="parameter">Параметр конвертации</param> /// <param name="culture">Локаль</param> /// <returns>Преобразованное значение</returns> public override object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (!(value is Enum enumValue)) { return(null); } string description = EnumNamesHelper.GetDescription(enumValue); return(string.IsNullOrWhiteSpace(description) ? enumValue.ToString() : description); }
/// <summary> /// Конвертация значений /// </summary> /// <param name="value">Значение</param> /// <param name="targetType">Целевой тип</param> /// <param name="parameter">Параметр конвертации</param> /// <param name="culture">Локаль</param> /// <returns></returns> public override object Convert(object value, Type targetType, object parameter, CultureInfo culture) { try { Enum enumObj = (Enum)value; return(EnumNamesHelper.GetDescription(enumObj)); } catch (Exception) { return(DoNothing); } }
/// <summary> /// Заполнение выпадающего списка на основе списка значений инутмератора /// </summary> /// <param name="dropDownList">Выпадающий список</param> /// <param name="list">Список значений инумератора</param> /// <param name="insertNotSetValue">Вставлять нулевое значение</param> public static void FillFromEnumList(this DropDownList dropDownList, IEnumerable <Enum> list, bool insertNotSetValue = false) { dropDownList.Items.Clear(); dropDownList.DataSource = list.Select(e => EnumNamesHelper.GenerateListItem(e)); dropDownList.DataTextField = "Text"; dropDownList.DataValueField = "Value"; dropDownList.DataBind(); if (insertNotSetValue) { dropDownList.Items.Insert(0, new ListItem("Не указано", string.Empty)); } }
/// <summary> /// Заполнение группы флажков на основе инумератора /// </summary> /// <typeparam name="T">Тип инумератора</typeparam> /// <param name="checkBoxList">Группа флажков</param> /// <param name="withoutZeroValue">Не использовать нулевое значение перечисления</param> public static void FillFromEnum <T>(this CheckBoxList checkBoxList, bool withoutZeroValue) { if (typeof(T).IsEnum) { checkBoxList.Items.Clear(); ListItem[] items = EnumNamesHelper.EnumToList <T>() .Where(i => !withoutZeroValue || i.Value.ToInt32() != 0) .ToArray(); checkBoxList.DataSource = items; checkBoxList.DataTextField = "Text"; checkBoxList.DataValueField = "Value"; checkBoxList.DataBind(); } else { throw new Exception("Параметр T должен быть инумератором"); } }
/// <summary> /// Заполнение выпадающего списка на основе инумератора /// </summary> /// <typeparam name="T">Тип инумератора</typeparam> /// <param name="dropDownList">Выпадающий список</param> /// <param name="insertNotSetValue">Вставлять нулевое значение</param> public static void FillFromEnum <T>(this DropDownList dropDownList, bool insertNotSetValue = false) { if (typeof(T).IsEnum) { dropDownList.Items.Clear(); List <ListItem> items = EnumNamesHelper.EnumToList <T>(); dropDownList.DataSource = items; dropDownList.DataTextField = "Text"; dropDownList.DataValueField = "Value"; dropDownList.DataBind(); if (insertNotSetValue && items.All(i => i.Value.NotEmpty(false))) { dropDownList.Items.Insert(0, new ListItem("Не указано", string.Empty)); } } else { throw new Exception("Параметр T должен быть инумератором"); } }