Hi,
ich sitze nunmehr seit mehreren Stunden an einem Problem, was mich nahezu zur Verzweiflung treibt. Ich habe ein DataGridView, in dem ich eine Spalte mit Comboboxen in den Zellen habe (DataGridViewComboBoxCell). Die einzelnen Comboboxen möchte ich nun während der Laufzeit mit Werten füllen. Das besondere dabei: Es soll sich dabei um Key-Value-Einträge handeln, d.h. zu dem für den User in der Kombobox angezeigten Eintrag gibt es im Hintergrund noch einen Key. Um das zu realisieren, benutze ich folgende Klasse:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| public class Option { public Option(String id, String value) { this.id = id; this.value = value; }
public string id; public string value;
public override string ToString() { return value; } } |
Mit folgendem Code fülle ich nun beispielsweise eine Combobox im DataGridView:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| DataGridViewComboBoxCell combo = (DataGridViewComboBoxCell)dgv_test[0,8];
foreach (Option option in attributes) { combo.Items.Add(new Option(option.id.ToString(), option.value.ToString())); } |
Soweit, so gut. Die Einträge werden beim starten des Programms einwandfrei in den Comboboxen angezeigt.
Nun aber das Problem:
Wenn ich einen Eintrag in der Combobox auswähle und ich dann die Zelle verlasse, bekomme ich die Fehlermeldung "Der Wert in der Combobox ist ungültig." Der Fehler ist vom Typ "DataError" und wenn ich mir beim entsprechenden Ereignis den Context ausgeben lasse, steht dort "Formatting / Display".
Ich habe nun schon ewig nach einer Lösung gesucht, aber bisher nichts gefunden. Weiss jemand von Euch, wie man den Fehler beseitigt bzw. in einer DataGridView-Combobox Werte mit Key und Value speichern kann?
Wenn ich die Combobox beispielsweise lediglich mit
C#-Quelltext
1: 2: 3: 4:
| foreach (Option option in attributes) { combo.Items.Add(option.value.ToString()); } |
fülle, d.h. nur mit einem einzelnen String, dann kommt der Fehler nicht. Nur ich brauche halt dringend noch den dazugehörigen Key, welchen ich dann später auslesen kann.
Wäre super, wenn mir jemand helfen könnte.
Übrigens: Bei normalen Comboboxen, welche sich nicht in einem DataGridView befinden, funktioniert die Option-Klasse einwandfrei.