Datagridview / Columns mit Dropdown (doppelte Bezeichner)

23/11/2007 - 12:48 von Wolfgang Schmidt | Report spam
Hallo,

Ich habe ein (für mich interessantes) Problem:

Ich habe in einer Datenbank Tabelle mit Eintràgen. In einem
DataGridView erlaube ich das Hinzufügen von Mappingeintragen.

In dem DataGridView nehme ich statt der IP einen sprechenden Namen in
einem Dropdown-Menü.

Beispiel Tabelle:

ID Name
1 Hans
2 Peter
3 Susi
4 Hans

In dem DataGridView wàre dann das Dropdown mit folgendermassen
verbunden:

DataPropertyName ID
DataSource tfBindingsource
DisplayMember Name
Items (Collection)
ValueMember ID

Soweit klappt eigentlich alles (Auswahl, SChreiben in DB).

Nur wenn der sprechende Bezeichner (im Beispiel Name) mehrmals
vorhanden ist (im Beispiel Hans) wird beim Rückschreiben in die
Datenbank der Wert des ersten Bezeichners geschreiben.

Speichern über:
this.mainTableAdapter.Update(this.DataSetConfiguration.main);
this.mappingTableAdapter.Update(this.DataSetConfiguration.xyzmapping);

D.H. statt 4 (Hans) wird in die DB 1 (Hans) eingetragen.

Warum ist dies so, und wie bekomme ich hin, dass wirklich der
ausgewàhlte Datensatz und nicht eine gleichnamiger Datensatz der
zufàllig denselben Anzeigenamen hat verwendet wird? Ich bin da langsam
etwas ratlos.

Grüße,
Wolfgang
 

Lesen sie die antworten

#1 Frank Dzaebel
26/11/2007 - 08:32 | Warnen spam
Hallo Wolfgang,

ID Name
1 Hans
2 Peter
3 Susi
4 Hans

D.H. statt 4 (Hans) wird in die DB 1 (Hans) eingetragen.
Warum ist dies so, ...



evtl. weil über den DisplayMember gespeichert wird,
anstatt über ValueMember.
Schau Dir Dein UpdateCommand-Text an.
Wenn man über DropDown ein Item auswàhlt,
erscheint ja der zugehörige DisplayMember
in der Zelle. Das Speichern sollte aber hier über
den ValueMember gehen, denn der DisplayMember
ist ja nicht eindeutig. Es könnten natürlich auch
andere von Dir vorgenommene Implementations-
Details das Verhalten verursachen, aber ich denke,
das oben geschilderte, ist erstmal das wahrscheinlichste.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen