C# List< > in DataGridView ohne Attribute als Header

Mijay

Ensign
Registriert
Apr. 2010
Beiträge
138
Hallo zusammen,
ich bin noch recht neu in C# unterwegs und habe derzeit ein Problem mit dem DataGridView.

Ich habe eine Klasse „Person“. Diese besitzt die Attribute „Vorname“ und „Nachname“. Dieses Objekt wird in einer Liste List<Person> personen gespeichert.
Das DataGridView habe ich im Designer editiert (siehe Bild).
Nun soll die Liste, welche mehrere Objekte enthält, entsprechend in das DataGridView eingeordnet werden.

Wenn ich folgendes mache
dataGridView1.DataSource = personen;
dann sehe ich zwar meine Daten, aber der holt sich als Header die Attribute. Das darf aber auf keinen Fall so sein. Der Header, der im Designer erstellt wurde, muss immer sichtbar sein!

Wie bekomme ich meine Liste in das DataGridView ohne die Attribute als Header?

Gruß
Mijay

 
kannst du ja doch nachdem du die daten reingeschrieben hast die header neu überschreiben.
 
Also die Daten mit DataSource reinschreiben und den Header dann wieder überschreiben. Wie mache ich das?
 
Kannst ja mal folgendes versuchen:

Im Designer unter den Eigenschaften für das DataGridView findest du die Eigenschaft "DataSource" (Sektion Daten):

1. DataSource-Eigenschaft aufklappen
2. "Projektdatenquelle hinzufügen" anklicken
3. Im Dialog "Objekt" auswählen und auf "Weiter" klicken
4. Im Baum die Klasse "Person" auswählen und auf "Weiter" klicken
5. "Fertig stellen"

Jetzt sollte in deinem Grid wahrscheinlich Vorname und Nachname als Spalten sichtbar sein, evtl. sind noch die 2 Spalten die du vorher drin hattest weiterhin enthalten.

6. In den Eigenschaften "Columns" öffnen
7. Die 2 vorherigen Spalten löschen und stattdessen die HeaderText Eigenschaft der Spalten Vorname und Nachname nach belieben ändern

Im Quellcode dann selber irgendwann mal "dataGridView1.DataSource = personen;" setzen.

BTW: Welche Version von Visual Studio bzw. C# verwendest du. Ggfs. kann es da leichte Unterschiede geben.
 
Auf Arbeit Visual Studio 2005 (das ist maßgebend). Zu Hause Visual Studio 2008 und wohl bald das 2010er, MSDNAA sei Dank ;).

edit: Der Hammer. Du hast mir seuper geholfen. Funktioniert genauso wie ich es sein muss. Super!! Vielen vielen Dank.
 
Zuletzt bearbeitet:
Erstmal schön das es bei dir funktioniert.

Aber evtl. ist es doch nicht gut, diesen von mir beschriebenen Weg zu gehen, weil man im Designer erst die DataSource - Eigenschaft mit der Klasse "Person" verknüpft um dann im Code diese Verknüpfung durch die Liste "Personen" zu ersetzen. Sieht im nachhinein für mich etwas strubbelig aus. Also wäre vielleicht besser, wenn du noch mal intensiver in der MSDN oder Onlinehilfe nachstöberst. Wenn du in die InitializeComponent() Methode der Form reinschaust, siehst du was genau in die DataSource-Eigenschaft vom Designer geschrieben wird. Wäre sicher ein guter Startpunkt für deine Recherchen...

Ansonsten viel Erfolg und frage hier im Forum, falls dir was unklar sein sollte. Nur Mut, man kann ja nicht alles wissen und Helfende gibt es hier reichlich...
 
Hi.

Es sollte auch die Eigenschaft AutoGeneratColumn geben die einfach auf false setzen.
Zu mindest findet man diese Eigenschaft beim Asp.net DataGrid, sollte aber auch hier der fall sein.

Mfg
UnKnOwN_86
 
Danke, ich schau mir das nochmal genauer an. Der Weg von Rossibaer funktioniert sehr gut. Das was ich beschrieben habe war mein Problem etwas umschrieben, da ich derzeit an meiner Diplomarbeit schreibe und aus Datenschutzgründen nicht die richtigen Klassen etc. nennen darf. Das Programm wird natürlich noch wesentlich komplexer werden und ich bin mal gespannt, ob die Lösung weiterhin funktionieren wird. Bis jetzt sieht es sehr gut aus. Bin am Freitag ordentlich voran gekommen.
 
Zurück
Oben