2009-09-02 5 views
1

J'ai un formulaire avec un DataGridView qui ouvre un formulaire de détails sur un double-clic.
Lors de l'ouverture du second formulaire, je l'ai défini pour utiliser la même instance DataSet que le formulaire parent. Je veux maintenant m'assurer que la deuxième forme pointe vers le même DataRow que le parent aussi bien.
Au début, je viens d'envoyer la propriété Position du formulaire parent BindingSource et définir la même propriété sur le BindingSource du formulaire de détails. Cela a bien fonctionné jusqu'à ce que je commence à trier le DataGridView - maintenant la position du parent montre la valeur triée, et tout l'enfer se déchaîne.
J'ai ensuite essayé d'envoyer le DataRow réel et même l'objet DataRowView du parent BindingSource, et en utilisant la méthode Find sur les détails BindingSource - mais ils renvoient juste -1.
De quelle autre manière puis-je utiliser pour définir la propriété BindingSourceCurrent, si je ne peux pas relayer les index ou les valeurs? Dois-je utiliser la méthode Filter et construire une requête de filtre dynamiquement (j'ai plusieurs propriétés pour PK, donc je ne peux pas simplement utiliser Find)?Synchronisation de deux BindingSources

+0

La méthode Find ne peut être utilisée que lorsque la liste sous-jacente est une IBindingList avec la recherche implémentée. –

Répondre

2

Vous pouvez itérer via DataRows dans BindingSource pour en trouver un sélectionné.

+0

Ouais - tout simplement la solution la plus simple. Bien que je sois surpris, il n'y a pas de moyen plus facile de synchroniser deux BindingSources de cette façon –