2009-06-17 7 views
0

J'ai un dset fortement typé, avec deux données: Parent et Enfant, w/une relation les reliant de la manière que vous attendez (par ex. a-plusieurs enfants).Winforms .net 2.0: lier une zone de texte à une propriété parente

Sur mon formulaire Détail de l'enfant, que je montre beaucoup d'informations sur l'enfant en cours, w/liaison appelle comme ceci:

me.txtBirthDate.DataBindings.add(New Windows.Forms.Binding("Text", MyDataset, "Child.Birthdate")) 

Mais je voudrais aussi montrer quelques informations sur les parents de l'enfant - dire , le nom du parent. J'ai essayé:

me.txtParentName.DataBindings.add(New Windows.Forms.Binding("Text", MyDataset, "Child.Parent.Name")) 

et

me.txtParentName.DataBindings.add(New Windows.Forms.Binding("Text", MyDataset, "Parent.Name")) 

Mais ces deux résultat dans une zone de texte vide.

Je peux bien sûr mettre les propriétés parent directement sur le tableau de données enfant & les remplir avec les résultats d'une jointure entre les tables db sous-jacentes, mais je voudrais éviter cela si c'est possible (ma vraie application implique juste quelques parents chacun w/beaucoup d'enfants & Je voudrais ne pas bouger autant de données inutiles).

Est-ce possible?

Merci beaucoup!

-Roy

Répondre

0

J'utilise habituellement un BindingSource entre les DataSet et les contrôles. Lorsque vous utilisez cette approche, si j'ai des contrôles que je veux lier à une ligne liée d'une table différente, je crée un nouveau BindingSource, qui pointe sur la ligne associée (sa propriété DataSource est l'original BindingSource, son DataMember est la table parente), puis liez les autres contrôles au deuxième BindingSource.

Je fais généralement tout cela dans la vue concepteur, qui crée simplement ces objets BindingSource au fur et à mesure.

Espérons que ça aide.

+0

Merci beaucoup - J'ai essayé le BindingSource, mais ce n'était pas évident comment je pourrais l'utiliser pour obtenir le parent. Je me suis contenté de gérer l'événement CurrencyManager.CurrentChanged de l'enfant, et d'y appeler .GetParentRows. IOW, je n'utilise pas de liaison pour ces champs. Merci d'avoir pris le temps! –

Questions connexes