Bonjour à tous,

j'ai un DataSet contenant 2 DataTables, "tbl_clients" et "tbl_commandes".

Je souhaitais visualiser la table "tbl_clients" avec un DataGridView,
et visualiser dans un autre DataGridView les commandes du client sélectionné.

J'ai donc ajouté une relation "toto"... dans le DataSet concernant le champs commun "client_id" des 2 tables :

Code :Sélectionner tout -Visualiser dans une fenêtre à part
DataSet1.Relations.Add("toto", DataSet1.Tables("tbl_clients").Columns("client_id"), DataSet1.Tables("tbl_commandes").Columns("client_id"))


et afin d'éviter l'utilisation de 2 BindingSource, j'ai écris ceci :

Code :Sélectionner tout -Visualiser dans une fenêtre à part
1
2
3
4
Me.DataGridViewClients.DataSource = DataSet1.Tables("tbl_clients")
 
Me.DataGridViewCommandes.DataSource = DataSet1.Tables("tbl_clients")
Me.DataGridViewCommandes.DataMember = "toto"


ça à l'air de très bien fonctionner.
quand je sélectionne un client dans le 1er DataGridView, ses commandes s'affichent dans l'autre.
Mais je ne comprend pas pourquoi.

Le "DataGridViewClients" visualise la table clients, ok.
Mais comment le "DataGridViewCommandes" sait qu'il doit afficher les données de la table "tbl_commandes"
puisque son Datasource est égal à la table "tbl_clients" ?
Vous allez me dire grâce à la relation "toto" affecté à la propriété ".DataMember".
Mais j'ai quand même du mal à comprendre comment tout ça s'articule en interne.
ça m'aurait intéressé d'en comprendre le mécanisme.