Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    7

    Databinding e validazione

    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

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    I linguaggi .NET hanno una sezione dedicata (Visual Basic e .NET Framework).

    Sposto.

    Inoltre il regolamento prevede che il linguaggio venga indicato obbligatoriamente nel titolo. Correggo anche questo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Puoi schiarirti le idee studiandoti questo progetto

    VB2005 OLEDB Demo
    http://www.planet-source-code.com/vb...4586&lngWId=10

    che per chi comincia è piuttosto utile perchè mostra come
    - aprire la connessione ai dati da codice
    - eseguire INSERT e UPDATE
    - utilizzare i parametri (!!!)
    - biuding con controlli (textbox, datagriview, ecc.)

    HTH

    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    7

    [VB.NET 2008] Databinding e validazione (risolto)

    ciao,

    mi scuso con LeleFT per la disattenzione; ero convinto di aver selezionato il forum corretto, ma evidentemente ho fatto casino: era l'una di notte!

    Grazie a gibra, ho scaricato il progetto, che da ottimi spunti. Purtroppo però non ho trovato nulla di utile su DataBindings.

    In compenso, facendo alcune prove, ho risolto il problema. Posto la soluzione che ho trovato, magari serve a qualcuno:

    Intanto, ho modificato la seguente riga:
    codice:
    f.txtDescrizione.DataBindings.Add(New Binding("text", ComAgenzieBindingSource, "descrizione"))
    come segue:
    codice:
    f.txtDescrizione.DataBindings.Add(New Binding("text", ComAgenzieBindingSource, "descrizione", True, DataSourceUpdateMode.Never))
    In questo modo l'aggiornamento automatico del dataset non avviene.

    Poi, nel pulsante OK del form, ho inserito:
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
        If txtDescrizione.Text = "" Then
            MsgBox("Valore non valido!", MsgBoxStyle.Critical, "Errore!")
            Exit Sub
        End If
    
        txtDescrizione.DataBindings("text").WriteValue()
    
        Me.Close()
    
    End Sub
    In questo modo posso validare tutti i controlli insieme, facendo magari delle verifiche incrociate, e quando tutto è ok aggiorno il dataset.

    ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.