Laden...

Datagridview mit mehreren Datasource

Erstellt von pringels vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.107 Views
P
pringels Themenstarter:in
24 Beiträge seit 2006
vor 17 Jahren
Datagridview mit mehreren Datasource

Hallo Leute,
ich hoffe ich bin hier im richtigen Forum, da ich noch ein programmier-newbie bin und auch ein paar allgemeine Fragen habe.
Ich möchte gern (oder eher muss) ein kleines Programm zur Kontaktverwaltung schreiben. Die Daten stehen in einer Access-Db.
Nun habe ich 2 Buissnes-Klassen gebaut: Person und Firma. Beide erben von der abstrakten Klasse Kontakt (z.B. Name). Die erbenden Klassen haben selbst aber aucch noch eigene Eigenschaften, z.B Vorname bei Person.
Nun möchte ich die Objekte beider Klassen in einem Datagridview anzeigen.
Bei einer Klasse wäre kein Problem. Da kann ich ja im VS2005 eine Bindingsource einstellen und dann die Spalten auswählen, die ich anzeigen will.
In meinem Fall eben Name und Vorname bei Personen.
Nun möchte ich aber Personen und Firmen zusammen anzeigen. Bei Personen den Name und Vorname, bei Firmen Name und eine leere Spalte (da Firmen keinen Vornamen haben).
Jemand eine Idee, wie ich das anstelle.
Danke schonmal...

D
496 Beiträge seit 2005
vor 17 Jahren

hi,,

erstellen doch einfach einen odbcdataadapter mit dem du per join über beide tabellen
eine abfrage ausführst und das ergebnis in einem dataset.datatable speicherst
und dieses als datasource für das grid nimmst.

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

P
pringels Themenstarter:in
24 Beiträge seit 2006
vor 17 Jahren

Hi,
ich wollte eigentlich die direkte Datenbindung vermeiden. Weil langfristig soll die Access-DB durch was anderes ersetzt werden (event. XML) und dann müsste ich in allen Forms usw ändern.
Ich würde schon gern mit meinen Buissness-Objects arbeiten...
Trotzdem danke für die Antwort.

P
pringels Themenstarter:in
24 Beiträge seit 2006
vor 17 Jahren

Habe es jetzt auf folgende Weise gelöst.
Ich habe eine ungebundene Spalte im Datagridview angelegt und bei Cell_formating das:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
       if (e.ColumnIndex == 3)
      {
              if (contactBindingSource[e.RowIndex].GetType().Equals(typeof(Person)))
              {
                    Person p = contactBindingSource[e.RowIndex] as Person;
                    if (p != null)
                    {
                        e.Value = p.Firstname;
                    }
              }
       }           
}