giovedì 24 settembre 2009

Gestire l’evento AddingNew del BindingSource

Uno dei “problemi” da risolvere durante la gestione degli oggetti DataGridView collegati ad una tabella tramite BindingSource è quella di “riuscire” a inizializzare con dei propri dati le nuove righe generate.

Tra gli eventi di BindingSource c’è AddingNew.

Come si potrà notare l’esempio di MSDN è del tutto inutilizzabile e non funzionante in quanto prende i dati da un metodo inesistente “democustomer” tralasciando la parte più importante!.

L’evento AddNew gestito:

'serve per attribuire valori calcolati a caso
Dim rnd As New System.Random(DateTime.Now.Second)
'definizione di un oggetto di tipo DataRowView
'ogni riga visualizzata è rappresentata da un oggetto
'di tipo DataRowView
Dim rowView As DataRowView = CType(BindingSource1.List, DataView).AddNew
'a sua volta DataRowView è collegato ad un DataRow il quale è collegato all'origine dati
Dim newRow As DataRow = CType(rowView.Row, DataRow)
'attribuzione di valori arbitrari
rowView("Descrizione") = String.Format("{0} {1}", "Test", rnd.Next(1, 100))
rowView("Valore") = Math.Round(rnd.NextDouble() * 100, 3)
'scrittura nell'oggetto sottostante in creazione
e.NewObject = rowView

L’esempio C#
L’esempio Visual Basic

Nessun commento: