Dataset relations entre tables.

yopdurat Messages postés 8 Date d'inscription jeudi 6 avril 2006 Statut Membre Dernière intervention 18 avril 2006 - 18 avril 2006 à 15:49
yopdurat Messages postés 8 Date d'inscription jeudi 6 avril 2006 Statut Membre Dernière intervention 18 avril 2006 - 18 avril 2006 à 19:40
Bonjour,
j'ai un dataset rempli avec 2 tables liées entre elles.
J'affiche un datagridview avec les données de la table 1, et un textbox doit prendre une valeur en fonction de la ligne choisie dans le datagridview.

J'ai crée des relations entre les 2 tables et tout fonctionne correctemment automatiquement.
ça ne marche pas quand je le fais programmatiquement:

A priori il faut utiliser la méthode GetChildRows de l'objet Datarow.
Cependant, datagridview.SelectedRow me retourne un datagridRow non castable en Datarow.

Je ne peux pas utiliser l'index de la ligne du datagridview comme index de la table car elles n'ont pas le même nombre de lignes. ( En gros datagrid.rows[i] non égal à table[i] ).

Donc le code suivant ne fonctionne pas car l'index pour le datagridview est différent de l'index de la table et donc ne me retourne pas la bonne donnée.


int myindex;

if (
this.datagridview.SelectedRows.Count != 0 )
{
myindex =
this.sERVERGROUPDataGridView.SelectedRows[0].Index;

DataRow pRow =
this.MonDataSet.TABLE1.Rows[myindex];

foreach (
DataRow cRow
in pRow.GetChildRows(
this.MonDataSet.TABLE1.ChildRelations[
"TABLE1_TABLE2"]))

this.textBox1.Text = cRow[
"F2"].ToString();


}



Avez-vous une idée de la bonne façon de procéder?

PS : Quelle est la plus value d'utiliser le modèle dataset/datatable et compagnie?
Un select join ne prendrais que quelques secondes , ou alors un select from table2 where id= truc.

1 réponse

yopdurat Messages postés 8 Date d'inscription jeudi 6 avril 2006 Statut Membre Dernière intervention 18 avril 2006
18 avril 2006 à 19:40
J'ai trouvé.
Il faut effectivement utiliser GetChildRows.

DataRow dRow = this.DataSet.TABLE1.FindByGID(new Guid(val));
foreach (DataRow pRow in dRow.GetChildRows(this.DataSet.TABLE1.ChildRelations["TABLE1_TABLE2"]))
{
foreach (DataRow cRow in pRow.GetChildRows(this.DataSet.TABLE2.ChildRelations["TABLE2_TABLE3"]))
{
System.Console.WriteLine(cRow.ItemArray[1].ToString());
}
}
0
Rejoignez-nous