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 :
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 :
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.
Partager