J'ai un formulaire avec une zone de liste et quelques zones de texte, lorsque l'utilisateur sélectionne un élément de la zone de liste, j'ai besoin de l'information appropriée pour apparaître dans le boîtes de txt et permettre à l'utilisateur de l'éditer.Que manque-t-il ... windows forms binding avec subsonic
Voici mon formulaire événement Load:
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
Et la SelectedIndexChange pour la liste:
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
J'utilise VB.Net 2005, mais peut convertir vos suggestions de C# si nécessaire ;)
Merci Tony W
Prendre cette route ne défaites sortof la cependant, «mettez-le et oubliez-le», la mentalité du databinding. Il est préférable de lier à un objet persistant une fois plutôt que de détruire et de recréer les liaisons de données à chaque fois. –
Pas vraiment, au sens où il l'utilise, la liaison de données n'est pas responsable de savoir quand l'utilisateur a l'intention de "changer" l'objet qui est lui-même databound. Le problème n'est pas la liaison de données, c'est l'intention de changer ce qui est databound. – Joseph
Génial! merci Tony W –