78 messaggi dal 27 ottobre 2006
ciao a tutti,
dato il codice qua sotto, perchè il ValoreCheckbox mi viene sempre inserito uguale nella tabella? eppure guardando con il debug prende il valore giusto!


For i = 0 To CheckboxList.Items.Count - 1
If CheckboxList.Items(i).Selected Then

ValoreCheckbox= CheckboxList.SelectedValue

cmd.CommandText = "INSERT INTO nometab. (Id, ValoreCheckbox) VALUES (@id, @ValoreCheckbox)"
cmd.Parameters.AddWithValue("@id", id)
cmd.Parameters.AddWithValue("@ValoreCheckbox", ValoreCheckbox)

cmd.ExecuteNonQuery()

End If
Next i
Ciao,

beh, non incrementi mai la variabile i che quindi il valore booleano "Selected" sarà sempre uguale.

Imho, meglio un ciclo foreach
foreach item in CheckboxList.Items
if item.selected ...

 meglio così:
foreach ListItem item in CheckboxList.Items
if item.selected ...

Modificato da fabrica il 22 aprile 2009 15.58 -

Fabrizio Canevali
78 messaggi dal 27 ottobre 2006
ho provato a fare come dici tu ma non cambia niente

ho provato anche a cambiare
ValoreCheckbox= CheckboxList.SelectedValue
con
ValoreCheckbox= CheckboxList.Items(i).Value

e davvero non capisco perchè guardando in debug con un breakpoint sulla riga
cmd.Parameters.AddWithValue("@ValoreCheckbox", ValoreCheckbox)
mi associ i valori giusti, poi invece aprendo la tabella abbia inserito per tutto il ciclo lo stesso identico valore!
Ciao, un po di codice, meglio di mille parole
foreach ListItem item in CheckboxList.Items 
{
if item.selected
{
cmd.CommandText = "INSERT INTO nometab. (Id, ValoreCheckbox) VALUES (@id, @ValoreCheckbox)" 
cmd.Parameters.AddWithValue("@id", id) 
cmd.Parameters.AddWithValue("@ValoreCheckbox", item.Value) 
...
}
}
Ocio che è scritto al volo ...

Fabrizio Canevali
78 messaggi dal 27 ottobre 2006
ma avevo provato a fare come dicevi tu ma non cambiava niente, mi inseriva sempre il valore errato!

comunque ho appena risolto, il problema è che avevo escluso dal ciclo (mettendole prima) le righe

Dim cmd As New System.Data.OleDb.OleDbCommand()
cmd.Connection = connessione

mettendole nel ciclo invece funziona correttamente.
quindi per concludere, il codice funzionante è

For i = 0 To CheckboxList.Items.Count - 1
If CheckboxList.Items(i).Selected Then

ValoreCheckbox= CheckboxList.Items(i).Value

Dim cmd As New System.Data.OleDb.OleDbCommand()
cmd.Connection = connessione
cmd.CommandText = "INSERT INTO tabella (Id, ValoreCheckbox) VALUES (@id, @ValoreCheckbox)"
cmd.Parameters.AddWithValue("@id", id)
cmd.Parameters.AddWithValue("@ValoreCheckbox", ValoreCheckbox)

cmd.ExecuteNonQuery()

End If
Next i


grazie lo stesso!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.