Laden...

Datagridview mit Daten aus dictionary<> "befüllen" geht - aber nicht bei list<>

Erstellt von BlackSimon vor 5 Jahren Letzter Beitrag vor 5 Jahren 931 Views
BlackSimon Themenstarter:in
42 Beiträge seit 2018
vor 5 Jahren
Datagridview mit Daten aus dictionary<> "befüllen" geht - aber nicht bei list<>

Hallo Leute,

ich bin auf ein Phänomen gestoßen, daß ich mir so nicht erklären kann.

Ich habe auf meiner Form ein Datagridview platziert, soweit alles in Ordnung!

Nun möchte ich auch das Datagrid, sprich die columns und rows, mit Daten füllen.
Dafür ist es ja da.


Dictionary<string, string> mybooks = new Dictionary<string, string>();

 private void btn_laden_Click(object sender, EventArgs e)
        {
            mybooks.Add("464654548","Deppy");
            mybooks.Add("894561131", "Krümmel");
            mybooks.Add("789512456", "Die Blechtrommel");
            mybooks.Add("316597542", "Der Rosenkavalier");

            dataGridView1.DataSource = mybooks.ToList();
        }


Funtioniert einwandfrei mit der Eigenschaft Datasource.

So, nun habe ich gedacht das würde bei einer list<> genauso gehen, also:



mylist.Add("Mercedes");
            mylist.Add("Volkswagen");
            mylist.Add("BMW");
            mylist.Add("Opel");

            dataGridView1.DataSource = mylist.ToList();


Es kompiliert zwar und es treten auch sonst keine Laufzeitfehler auf, aber anstatt der erhofften listitems zeigt mir das Datagrid Reihe für Reihe die Länge der strings an.
Offensichtlich wird die Length Eigenschaft ausgelesen und angezeigt.

Das hat mich jetzt ein wenig überrascht.
Ich kann es mir nicht erklären.

3.003 Beiträge seit 2006
vor 5 Jahren

DataGridView schaut, wenn Display/ValueMember-Properties nicht gesetzt sind (wie bei dir) nach den öffentlichen Properties der Objekte, die in der Datenquelle gespeichert sind.

Du hast strings gespeichert. String hat genau eine öffentliche Eigenschaft: Length.

So erklärt sich das.

Benutze eine BindingList, eine richtige Containerklasse statt einfach string, und DisplayMember/ValueMember.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)