Ich habe ein Formular mit einem Listenfeld und ein paar Textfelder, wenn der Benutzer ein Element aus dem Listenfeld auswählt, brauche ich die entsprechenden Informationen in der angezeigt werden txt boxes und erlauben dem Benutzer, es zu bearbeiten.Was fehlt mir ... Windows Formen Bindung mit Unterschall
Hier ist meine Form Load-Ereignis:
Private prt As New DataAccess.Part
Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim lc As System.Web.UI.WebControls.ListItemCollection = DataAccess.Part.GetListItems()
cboParts.DataSource = lc
lstParts.DataSource = lc
txtPartBefore.DataBindings.Add(New Binding("Text", prt, "PartNumBefore", True, DataSourceUpdateMode.OnPropertyChanged))
txtPartAfter.DataBindings.Add(New Binding("Text", prt, "PartNumAfter", True, DataSourceUpdateMode.OnPropertyChanged))
txtOperation.DataBindings.Add(New Binding("Text", prt, "Operation", True, DataSourceUpdateMode.OnPropertyChanged))
txtNotes.DataBindings.Add(New Binding("Text", prt, "Notes", True, DataSourceUpdateMode.OnPropertyChanged))
End Sub
Und die SelectedIndexChange für das Listenfeld:
Private Sub lstParts_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstParts.SelectedIndexChanged
Dim ctl As ListControl = DirectCast(sender, ListControl)
prt = DataAccess.Part.FetchByID(ctl.SelectedValue.value)
End Sub
Ich verwende VB.Net 2005, kann aber Ihre Vorschläge von C# konvertieren, wenn nötig ;)
Dank Tony W
diese Route sortof nicht besiegt die "Setzen Sie es und vergessen Sie es" Mentalität der Datenbindung, obwohl. Es ist besser, einmal an ein persistentes Objekt zu binden, anstatt die Datenbindungen jedes Mal zu zerstören und neu zu erstellen. –
Nicht wirklich, im Sinne dessen, wie er es benutzt, ist das Datenbinding nicht dafür verantwortlich, zu wissen, wann der Benutzer "ändern" will, welches Objekt selbst verbunden ist. Das Problem ist nicht die Datenbindung, es ist die Absicht zu ändern, was datengebunden ist. – Joseph
Super! danke Tony W –