DataGridView mit DataGridViewComboxColumn die Werte eines Enums enthält



  • Hallo zusammen,

    leider konnte ich für mein Problem bisher noch keine Lösung finden. Vielleicht fällt jemanden hier etwas ein.

    Ich habe die folgenden Strukturen in meinem Code zur Verfügung:

    public class Auto
        {
            public string Name { get; set; }
            public int Baujahr { get; set; }
            public double PS { get; set; }
            public AutoType AutoType { get; set; }
        }
    
        public enum AutoType
        {
            Van = 0,
            Sport,
            City
        }
    

    Ich möchte nun eine Liste von Autos in einem DataGridView anzeigen. Dabei soll der Benutzer den AutoType in einer DataGridViewComboboxColumn auswählen können.
    Wenn ich nun aber die DataSource des DataGrids mit der List<Auto> verknüpfe, dann stehen in der ComboboxColumn halt nur die Werte, die im Grid schon vorkommen, aber nicht alle zulässigen. Versuche ich nun die DataSoruce der ComboBoxColumn zu ändern via DataSource = Enum.GetValues(typeof(AutoType)) dann bekomme ich immer eine ArgumentException beim Laden des Grids.

    Weiß jemand, wie ich das löse?

    Danke.



  • öhm... ob das jetzt die Lösung für dein Problem ist weiss ich nicht, aber du solltest mal sicher das hier machen:

    Van = 0,
    Sport = 1,
    City = 2



  • Das Druchnummerien eines Enums ist nicht erforderlich. Habe es dennoch ausprobiert aber ohne Erfolg.
    Das Problem scheint doch zu sein, dass die ComboBoxColumn ein Binding für Auto.AutoType besitzt (implizit erzeugt durch grid.DataSoruce = List<Auto>). In einer List<Auto> ist das genau immer ein Wert.
    Nun müsste ich das Binding irgendwie auflösen, indem ich z.B. die DataSoruce der ComboBoxColumn ersetze.
    Aber irgendwie klappt dann das Binding des Grids nicht mehr.



  • Hallo,

    hast du denn auch die Eigenschaft DataPropertyName der ComboBoxColumn gesetzt?
    Ansonsten sollte es eigentlich funktionieren, s.a. How to: Bind Objects to Windows Forms DataGridView Controls


Anmelden zum Antworten