Logo UGIdotNET

Discussione 'Come realizzare uno user control che supporta il binding'

# Pubblicato il 22 feb 2010 12.25 - Rispondi
Paolo Fornari
Come realizzare uno user control che supporta il binding
Ciao a tutti,
ho già scritto sul forum msdn inglese senza successo spero di essere più fortunato qui.

Sto cercando di realizzare uno user control che supporti il binding. Lo scopo è quello di automatizzare la ricerca e decodifica di un soggetto anagrafico.
Questo user control deve contenere più caselle di testo e per ognuna deve esporre una proprietà che sia bindabile.
Per farlo ho impostato l'attributo Bindable su ogni proprietà e sollevo un PropertyChangedEventHandler nella property Set. Credo che sia il modo corretto per farlo.

Ecco un esempio di codice:
<Bindable(True, BindingDirection.TwoWay)> _
Public Property Codice() As String
Get
Return txtCodice.Text
End Get
Set(ByVal value As String)
Dim ppe As PropertyChangedEventArgs = New PropertyChangedEventArgs("Codice")
OnValueChanged(ppe)
txtCodice.Text = value
End Set
End Property

Il problema è che quando utilizzo lo user control, a runtime, questo non mi aggiorna la datasource, o meglio, mi aggiorna solo la prima proprietà aggiunta alla collezione DataBindings dello User control, sia che la aggiunga io a mano oppure che lo faccia il designer passando per una bindingsource.

Me.UcSoggettoAnagrafico1.DataBindings.Add(New System.Windows.Forms.Binding("Codice", Me.BindingSource1, "Codice", True))
Me.UcSoggettoAnagrafico1.DataBindings.Add(New System.Windows.Forms.Binding("Conto", Me.BindingSource1, "Conto", True))
Me.UcSoggettoAnagrafico1.DataBindings.Add(New System.Windows.Forms.Binding("Gruppo", Me.BindingSource1, "Gruppo", True))

Le altre proprietà della datasource non vengono aggiornate.
Come datasource utilizzo delle entità custom.
Ho notato che se al posto della entità custom utilizzo una datatable il tutto funziona perfettamente!

Spero di essere riuscito a spiegare correttamente il problema..

Qui ci sono i link alle discussioni sulle quali ho postato in cui mi sembrava ci fosse lo stesso problema.

http://social.msdn.microsoft.com/Forums/en/winformsdatacontrols/thread/23344424-1851-416f-8cef-143e54b5a4c7
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/e3766a4a-162b-4693-b7b2-d81708759f1b
http://social.msdn.microsoft.com/Forums/en/winformsdatacontrols/thread/a723fdf8-02c6-4d61-96f0-2271deecadbb

Addirittura nel terzo link il moderatore dice: 'There is some problem with the DataBinding product. We need to check it with the product team.' e poi più nulla, però io stento a credere che non si possa realizzare uno user control bindabile con + caselle di input...

Grazie in anticipo a tutti.
Paolo

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185