Newsgroup: it.comp.lang.visual-basic
Titolo: [.net] Databinding e check box

Sto tentando di utilizzare il DataBinding in una form.
Private Sub InizializeBinding()
    LblCodiceContatto.DataBindings.Add("Text", DsContatti, "Contatti.CodiceCF")
    TxtRagioneSociale.DataBindings.Add("Text", DsContatti,
"Contatti.RagioneSociale")
    ChkItaliano.DataBindings.Add("Checked", DsContatti, "Contatti.Italiano")
    CboRegione.DisplayMember = "Descrizione"
    CboRegione.ValueMember = "CodiceRegione"
    CboRegione.DataSource = DsContatti.Tables("Regioni")
    CboRegione.DataBindings.Add("SelectedValue", DsContatti,
"Contatti.CodiceRegione")
    Bmb = Me.BindingContext(DsContatti, "Contatti")
    Bmb.Position = Bmb.Count
    Bmb.Position = 0
End Sub
Il problema si verifica quando voglio pulire la maschera per aggiungere un
nuovo record:
Private Sub BtnNuovo_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnNuovo.Click
    Bmb.AddNew()
    FlagMod = ModuloMW.FlagModifica.Insert
End Sub
Tutto funzionava correttamente.
Ha smesso di funzionare quando ho associato al BindingManagerBase un
controllo di tipo CheckBox (CheckItaliano).
Se qualcuno ha qualche idea ...
Grazie
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 controllo di tipo CheckBox (CheckItaliano).
Credo che ci sia un bug a causa del null... Se ne era già parlato cerca nei
vecchi post...
    Ciao
        Allanon
-- 
- SPAMKILLER
 lasciate il NOSPAM nell'indirizzo: 
itlangv...@michele.sytes.net
 e lasciate la parola SPAMKILLER nel corpo dell'email

 ha
scritto:

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 associato ad un campo Boolean del database.
Si dovrebbe rispondere a fine post.
Per verifica, ad una tabella ho aggiunto un campo, sql server 2000, con
tipo=bit e valore predefinito= -1 o 0
al caricamento:
ckbFlag.DataBindings.Add("Checked", ds, "tblNomi.Flag")
risponde:
'Impossibile stabilire l'associazione alla proprietà o alla colonna Flag di
DataSource. Nome parametro: dataMember
Presumo che ci sia incompatibilità tra il DataBindings e il cheched del
checkbox
Se il valore è Null:
"Impossibile eseguire il cast dell'oggetto a DBNull ad altri tipi"
Ave
giuseppeD


Io ho un DB Access con un campo Si/No e il comportamento è il seguente:
Lo scorrimento dei record con il BMB.Position funziona correttamente.
Quando tento di pulire la maschera con BMB.AddNew non ottengo nessun errore,
ma semplicemente non pulisce la maschera (Cosa che invece fa se remmo la
riga relativa al controllo CheckBox)


 se remmo la riga relativa al controllo CheckBox)
Controlli data-eccetera? Evvai!
DAO o ADO?


ADO .NET provider OLE DB
File MDB Access 2003
Form con una Label, un paio di text box, una Combo e ... se ci riesco ... un
CheckBox
Ciao


 ADO .NET provider OLE DB
Ti chiedo scusa, non avevo visto il .net, pur in bella evidenza nel subject.
Non conosco...


A me con il parse/format seguente funziona. Avevo anch'io lo stesso
problema. Il mio campo "flag_da_accettare" è un smallint 0 o -1.
Spero ti possa essere utile.
Ciao, Michele
Dim b As New Binding("Checked", dv_preventivi, "flag_da_accettare")
        AddHandler b.Format, AddressOf Intero_to_boolean
        AddHandler b.Parse, AddressOf boolean_to_integer
Me.chk_invia.DataBindings.Add(b)
Private Sub Intero_to_boolean(ByVal sender As Object, ByVal cevent As
ConvertEventArgs)
        'Effettua la trascodifica fra l'intero della tabella (campo
flag_da_accettare) e la relativa check
        If cevent.Value = -1 Then
            cevent.Value = True
        Else
            cevent.Value = False
        End If
    End Sub
    Private Sub boolean_to_integer(ByVal sender As Object, ByVal
cevent As ConvertEventArgs)
        'Effettua la trascodifica fra il check e l'intero della
tabella (campo flag_da_accettare) 
        If cevent.Value = True Then
            cevent.Value = -1
        Else
            cevent.Value = 0
        End If
    End Sub


Utilizzando un campo Integer e le funzioni di Format e Parse si comporta
esattamente allo stesso modo che utilizzando un campo Boolean.
In effetti il problema, non si verifica durante lo scorrimento dei record
(tutto funziona correttamente), ma quando tento di pulire la maschera
utilizzando il metodo AddNew del BindingManagerBase.
Penso comunque di tentare un'altra strada:
Collego una Label al campo IDClienteFornitore e gestisco tutti i controlli
in modo manuale attraverso il DataSet.
Secondo voi è la soluzione migliore ?
Grazie


Secondo voi è la soluzione migliore ?
E' un po' scomodo...
Ciao, Michele


Ok cosě funziona.
Quindi non č sufficiente impostare il valore di default per il campo nel DB,
ma occorre impostarlo nel DataColumn.
Ti ringrazio molto
