Ciao a tutti!
Sto muovendo i miei primi passi con vb.net 2008/ado.net, e provengo dal mondo vb6/ado.
Nel creare una prima piccola applicazione che mi permetta di prendere familiarità con la nuova tecnologia sto incontrando qualche difficoltà.
Vi chiedo aiuto in particolare per questo:
Ho creato un progetto Windows Forms, ho inserito su un form una griglia, con un dataset, un tableadapter e un bindingsource. fin qui tutto ok.
La griglia funziona, così ho aggiunto un secondo form; l'idea è di inserire in questo secondo form i valori dei vari campi per permettere la modifica.
Quindi ho creato nel secondo form una textbox e nel codice di form1 ho aggiunto:
codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Using f As New frmEditAgenzia
f.txtDescrizione.DataBindings.Add(New Binding("text", ComAgenzieBindingSource, "descrizione"))
f.ShowDialog()
End Using
End Sub
Questo codice mi lega il controllo del secondo form al bindingsource del primo, prendendo i dati dalla riga evidenziata nella griglia.
Anche qui tutto ok.
Il problema è che se io modifico i dati nella textbox, appena mi sposto su un altro controllo il dataset sottostante viene aggiornato, senza permettermi di fare la validazione.
Ho provato con l'evento Validating:
codice:
Private Sub txtDescrizione_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtDescrizione.Validating
If txtDescrizione.Text = "" Then
MsgBox("Valore non valido!", MsgBoxStyle.Critical, "Errore!")
e.Cancel = True
End If
End Sub
questo effettivamente funziona, ma il problema è che l'evento viene generato ogni volta che passo da un controllo all'altro.
In sostanza, io vorrei poter compilare tutti i controlli, magari anche con valori errati, e validarli tutti in un colpo solo, diciamo quando l'utente clicca sul pulsante OK del form.
A quel punto, se la validazione ha esito positivo, il dataset deve essere aggiornato.
Pensate che si possa fare, oppure devo rinunciare alla funzione databinding?
grazie a tutti!
ciao!!
Roberto