[C#] Enum değerlerini dropdownlist’e bind etme

Yaratmış olduğumuz enumları dropdown’ımıza bind edip gelen değeri enum değerine çevirerek cast işlemlerinden kurtulabiliriz.
Aşağıdaki şekilde jenerik bir metod yazıyoruz.

        public static List<ListItem> GetList<TEnum>() where TEnum : struct
        {
            List<ListItem> items = new List<ListItem>();
            foreach (int value in Enum.GetValues(typeof(TEnum)))
            {
                items.Add(new ListItem
                {
                    Text = Enum.GetName(typeof(TEnum), value),
                    Value = value.ToString()
                });
            }
            return items;
        }

Aşağıdaki metodu çağırdığımızda enumun value ve keylerini dropdown’ımıza bind etmiş oluyoruz.

    private void BindExtensionType()
    {
        ddlExtensionType.DataSource = GetList<ExtensionType>();
        ddlExtensionType.DataBind();
    }

Aşağıdaki metodu kullanarak ise seçilen item’ın enum değerini jenerik bir şekilde almış olacağız.

        public static TEnum SelectedItemEnum<TEnum>(string value) where TEnum : struct
        {
            return (TEnum)Enum.Parse(typeof(TEnum),
                String.IsNullOrEmpty(value) ? "0" : value);
        }

Gelen string değerini enum değerimize dönüştürmemiz için ise aşağıdaki şekilde bir metod yazmamız yeterli olacaktır.

    private ExtensionType GetExtensionType()
    {
        return SelectedItemEnum<ExtensionType>(ddlExtensionType.Items[ddlExtensionType.SelectedIndex].Value);
    }


        public static TEnum SelectedItemEnum<TEnum>(string value) where TEnum : struct
        {
            return (TEnum)Enum.Parse(typeof(TEnum),
                String.IsNullOrEmpty(value) ? "0" : value);
        }

Örnek enumumuz aşağıdaki gibidir:

    public enum ExtensionType
    {
        [StringValue("ExtensionType1")]
        ExtensionType1= 0,
        [StringValue("ExtensionType2")]
        ExtensionType2= 1,
        [StringValue("ExtensionType3")]
        ExtensionType3= 2,
        Undefined = 3,
    }

Bir sonraki yazımda görüşmek üzere, hoşçakalın.

Kaynak : http://stackoverflow.com/questions/61953/how-do-you-bind-an-enum-to-a-dropdownlist-control-in-asp-net

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir