2009-06-17 10 views
0

ich eine stark typisierte dset haben, w/zwei Datentabellen: Eltern und Kind, w/einer Beziehung sie in der Art und Weise verbindet man erwarten würde (zB Eltern- hat-viele-Kinder).WinForms .net 2.0: Binden einer Textbox an eine übergeordnete Eigenschaft

Auf meinem Kind Detailformular, zeige ich viele Informationen über das aktuelle Kind, w/Bindung Anrufe wie folgt:

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

Aber ich würde auch einige Informationen wie die auf dem Kind Eltern zeigen - sagen , der Name des Elternteils. Ich habe versucht:

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

und

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

Aber diese in einem leeren Textfeld führen beide.

Ich kann natürlich die übergeordneten Eigenschaften direkt auf die Child DataTable & füllen sie w/die Ergebnisse einer Verknüpfung zwischen den zugrunde liegenden DB-Tabellen, aber ich möchte vermeiden, wenn es möglich ist (meine echte App umfasst nur ein paar Eltern mit vielen Kindern & Ich möchte nicht so viel unnötige Daten bewegen).

Ist das möglich?

Vielen Dank!

-Roy

Antwort

0

ich in der Regel ein BindingSource zwischen den DataSet und den Kontrollen verwenden. Bei diesem Ansatz, wenn ich Kontrollen, die ich aus einer anderen Tabelle in eine verwandte Reihe binden will, muss ich einen neuen BindingSource schaffen, die in der entsprechenden Zeile zeigt (seine DataSource Eigenschaft ist die ursprüngliche BindingSource, seine DataMember ist die übergeordnete Tabelle), und binden Sie dann die anderen Steuerelemente an die 2. BindingSource.

Normalerweise mache ich alles in der Designer-Ansicht, die nur diese BindingSource Objekte erstellt, wie ich gehe.

Hoffe, dass hilft.

+0

Dank viel - habe ich versucht, das Binding, aber es war nicht klar, wie ich es bei der Mutter bekommen nutzen könnte. Ich habe nur das CurrencyManager.CurrentChanged-Ereignis des Kindes behandelt und dort .GetParentRows aufgerufen. IOW, ich verwende keine Bindung für diese Felder. Danke, dass du dir die Zeit genommen hast! –

Verwandte Themen