Relation zwischen DataGrids (Compact Framework)

14/07/2008 - 16:44 von Thomas Griepentrog | Report spam
Hallo NG,

ich kàmpfe gerade mit der Relation zweier DataGrids (nicht DataGridView), da
ich mit dem Compact Framework 3.5 arbeite.

Ich habe in meinem DataSet 2 Tabellen (Patient, Messungen).

Die 1. Tabelle wird gefüllt mit ID,Nachname,Vorname,Geschlecht. In der 2.
Tabelle sollen dann die Messungen zu dem jeweiligen Patienten angezeigt
werden (ID, Messtyp, Resultat).

Da dachte ich mir, das kann man ja wunderbar über eine Relation machen (in
der DB sind die Tabellen auch über Primery-Foreign-Key miteinander in
Verbindung.) Primary-Key ist die ID des Patienten.

Habe das aktuell folgendermaßen gemacht:

DataSet dsPatient = new DataSet();
// Patientenliste
string dsPatientSelect = "SELECT Patient.ID , Patient.surname,
Patient.firstname, Gender.description AS Gender FROM Patient INNER JOIN
Gender ON Patient.gender = Gender.ID";
SqlCeDataAdapter daPatient = new SqlCeDataAdapter(dsPatientSelect, con);
daPatient.Fill(dsPatient, "Patient");
dgvPatient.DataSource = dsPatient.Tables[0];

//Messliste
string dsMeasurementSelect = "SELECT ID,Messtype,Result FROM Measurement";
SqlCeDataAdapter daMeasurement = new SqlCeDataAdapter(dsMeasurementSelect,
con);
daMeasurement.Fill(dsPatient, "Measurement");

Aber jetzt kommt mein Problem:

Die Relation habe ich wie folgt gemacht:
dsPatient.Relations.Add("PatientToMeasurement",
dsPatient.Tables[0].Columns[0], dsPatient.Tables[1].Columns[0]);

Doch wie bekomme ich jetzt in dem 2. DataGrid nur die Resultate des
jeweiligen Patienten angezeigt?

Mit dgvMeasurement.DataSource = dsPatient.Tables[1]; klappt das leider
nicht.

Und die Beispiele, die ich für Relation gefunden habe, greifen auf das
DataGridView zu.

Kann ich das im CF überhaupt Lösen, wenn ja wie?

Danke
Thomas Griepentrog
 

Lesen sie die antworten

#1 Elmar Boye
15/07/2008 - 09:53 | Warnen spam
Hallo Thomas,

Thomas Griepentrog schrieb:
ich kàmpfe gerade mit der Relation zweier DataGrids (nicht
DataGridView), da ich mit dem Compact Framework 3.5 arbeite.

Ich habe in meinem DataSet 2 Tabellen (Patient, Messungen).

Die 1. Tabelle wird gefüllt mit ID,Nachname,Vorname,Geschlecht. In der
2. Tabelle sollen dann die Messungen zu dem jeweiligen Patienten
angezeigt werden (ID, Messtyp, Resultat).

Da dachte ich mir, das kann man ja wunderbar über eine Relation machen
(in der DB sind die Tabellen auch über Primery-Foreign-Key miteinander
in Verbindung.) Primary-Key ist die ID des Patienten.

Habe das aktuell folgendermaßen gemacht:

DataSet dsPatient = new DataSet();
daPatient.Fill(dsPatient, "Patient");
dgvPatient.DataSource = dsPatient.Tables[0];

daMeasurement.Fill(dsPatient, "Measurement");

Aber jetzt kommt mein Problem:

Die Relation habe ich wie folgt gemacht:
dsPatient.Relations.Add("PatientToMeasurement",
dsPatient.Tables[0].Columns[0], dsPatient.Tables[1].Columns[0]);

Doch wie bekomme ich jetzt in dem 2. DataGrid nur die Resultate des
jeweiligen Patienten angezeigt?
Mit dgvMeasurement.DataSource = dsPatient.Tables[1]; klappt das leider
nicht.



Binde über das DataSet - denn dort werden die Relationen verwaltet
und gib die Relation an:
dgvPatient.DataSource = dsPatient
dgvPatient.DataMember = "Patient"

dgvMeasurement.DataSource = dsPatient
dgvDataMember = "Patient.PatientToMeasurement"

Und die Beispiele, die ich für Relation gefunden habe, greifen auf das
DataGridView zu.


Kann ich das im CF überhaupt Lösen, wenn ja wie?



Ich mache zwar nicht in CF, das sollte da aber identisch funktionieren.

Ein Beispiel (für Normal .NET) hatte ich die Tage hier gepostet:
<URL:http://groups.google.de/group/micro...22d771>

Dort kommt eine BindingSource zum Einsatz, die auch im CF 2.0
zur Verfügung steht. Und das ganze sichtbarer macht.

Gruß Elmar

Ähnliche fragen