Windows Forms: Entity Framework Datenbindung, Enums und DataGridViewComboBoxColumn

Hier eine kleine Erweiterung meines EnumHelpers aus meinem Beitrag „Windows Forms: Entity Framework Datenbindung, Enums und ComboBoxen„, da dieser bisher nur mit einzelnen ComboBoxen aber nicht mit ComboBox Spalten in einem DataGridView funktioniert hat:

public static class EnumHelper
{
...
        public static void BindToComboBoxColumn(DataGridViewComboBoxColumn comboBoxColumn, string propertyName)
        {
            if (typeof(E).IsEnum)
            {
                comboBoxColumn.ValueType = typeof(Int32);
                comboBoxColumn.ValueMember = "Value";
                comboBoxColumn.DisplayMember = "Display";
                comboBoxColumn.DataSource = ((E[])Enum.GetValues(typeof(E)))
                    .Select(value => new { Display = value.ToString(), Value = (int)(object)value })
                    .ToList();
            }
        }
....
}

Die Inspiration stammt aus dem Beitrag von Bradley Smith in einer Diskussion um „How to show Enum type members in a DataGridViewComboBox?„. Ich geben zu, das casten von enum nach object nach int ist nicht gerade die feine Art, aber es erfüllt seinen Zweck ;-)


About this entry