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:
Questo codice mi lega il controllo del secondo form al bindingsource del primo, prendendo i dati dalla riga evidenziata nella griglia.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
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:
questo effettivamente funziona, ma il problema è che l'evento viene generato ogni volta che passo da un controllo all'altro.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
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

Rispondi quotando