Entwickler-Ecke

WinForms - Combobox mittels Datatable füllen


Vegeto - Mi 25.03.15 12:30
Titel: Combobox mittels Datatable füllen
Hallo,

ich möchte meine Combobox mittels Datatable füllen:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(s.ShowKunde());

comboBox1.DisplayMember = "Id";
comboBox1.ValueMember = "Name";
comboBox1.DataSource = myDataSet.Tables["Obst"];
// hinter dem myDataSet.tables["Obst"] habe ich auch .DefaultView ausprobiert, doch es kommt das selbe Problem.


Doch wenn ich das so ausführe steht in meiner Combobox: 10x System.Data.DataRowView, es ist schon Korrekt das nur 10 Zeilen angezeigt werden soll, aber leider zeigt er nicht die ID und den Namen an :(

Ich hoffe jemand weiß wo das Problem liegt, habe schon gegooglt und viele haben es so gemacht wie ich es auch hab, doch bei mir kommt nicht die gewünschte Ergebnismenge.

Liebe Grüße


Ralf Jansen - Mi 25.03.15 12:34

Erst DataSource zuweisen dann DisplayMember/ValueMember setzen und ich vermute mal du hast die Bedeutung von DisplayMember und ValueMember miteinander verwechselt.


Vegeto - Mi 25.03.15 12:52

Hallo Ralf Jansen,

ich habe nun Datasource zugewiesen und DisplayMember und ValueMember miteinander gewechselt. Doch leider kommt diese Fehlermeldung:

Quelltext
1:
ArgumentException: An den neuen Anzeigemember kann nicht gebunden werden.                    

Ich weiß leider nicht voran das liegt :(

Kann mir da jemand helfen?

Lg


Ralf Jansen - Mi 25.03.15 13:05

Weiß nicht genau was die Meldung zu bedeuten hat. Gucken wir aber gerade mal auf was anderes. Wieso schiebst du die DataTable durch ein DataSet und bindest nicht gleich an die DataTable? Und wenn die Funktion die die DataTable liefert ShowKunde heißt wieso meinst du im DataSet würde die plötzlich "Obst" heißen? Du veraltest Kunden in einer Tabelle die Obst heißt?


Vegeto - Mi 25.03.15 13:23

Hallo Ralf Jansen,

ShowKunde() ist eine Methode die ein DataTable erstellt mit dem Namen Obst. Ich habe vergessen ShowKunde in ShowObst zu ändern :oops:
Ich habe es auch schon direkt versucht die Combobox mit dem Datatable zu erstellen, doch dort tauchen die selben Probleme auf wie mit dem DataSet.

C#-Quelltext
1:
comboBox1.DataSource = s.ShowObst();                    

Kommt zu der selben Fehlermeldung.

LG


Ralf Jansen - Mi 25.03.15 13:28

Dann gehe ich mal davon aus das du entweder Id oder Name falsch geschrieben hast. Zumindest nicht so wie sie in der DataTable heißen.


Vegeto - Mi 25.03.15 13:48

Hi Ralf Jansen,

DANKESCHÖN... Recht hast du ich habe den ValueMember falsch geschrieben :oops:
Ist es auch möglich in der Combobox Id und "ObstName"(so war es in dem DT) nebeneinander anzuzeigen, z.B. 1 Apfel, 2 Birne ... ?

LG


Ralf Jansen - Mi 25.03.15 14:59

Eine ComboBox ist erstmal einspaltig. Wenn du beides so anzeigen willst dann brauchst du in deiner Abfrage eine entsprechende Spalte die das so liefert.