Domanda

Sto lavorando con una vecchia applicazione web sviluppata nel framework VB.NET 1.1. Sto riscontrando un problema con le caselle di controllo.

Ho il seguente codice per la mia casella di controllo:

<asp:TemplateColumn HeaderText="Reviewed">
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
<ItemTemplate>
<asp:checkbox ID="chkAppRev" Runat="server" 
    OnCheckedChanged="onCheckChange" AutoPostBack="True" />  
</ItemTemplate>
</asp:TemplateColumn>

e questo per il mio evento OnCheckChanged :

Public Sub onCheckChange(ByVal sender As Object, ByVal e As EventArgs)
    Dim strSQL As String = String.Empty
    Dim inbox As CheckBox = CType(sender, CheckBox)
    Dim dgItem As DataGridItem = CType(inbox.NamingContainer, DataGridItem)
    Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(ConfigurationSettings.AppSettings("CONNECTIONSTRING"))
    Try
        '--update checkbox field on record in database
        conn.Open()
        If inbox.Checked = True Then
            strSQL = "Update AppUserJobs Set AppChecked=1 " & _
            "Where AppUserId=" & Convert.ToInt32(dgItem.Cells(9).Text) & 
 " and JobId=" & Convert.ToInt32(dgItem.Cells(10).Text)



        Else
            strSQL = "Update AppUser Set AppChecked=0 " & _
            "Where AppUserId=" & Convert.ToInt32(dgItem.Cells(9).Text) & 
" and JobId=" & Convert.ToInt32(dgItem.Cells(10).Text)
        End If

        Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strSQL, conn)
        Dim intRec As Integer = cmd.ExecuteNonQuery()
        conn.Close()
    Catch ex As Exception
    Finally
        If (conn.State = ConnectionState.Open) Then
            conn.Close()
        End If
    End Try
    BindData()
End Sub

Tutto funziona benissimo finché non aggiungo un'altra casella di controllo nel codice asp e un altro metodo oncheckchanged , sembra che salti semplicemente la query.

Qualcuno ha qualche idea di cosa mi sono perso?

È stato utile?

Soluzione

Hai un GRANDE NO-NO nel codice: sta silenziosamente catturando un'eccezione e gettandola via.

Esiste una sorta di eccezione da qualche parte nel metodo, ma quando si eliminano tutte le informazioni a riguardo, non vi è alcun indizio su cosa vada storto. Probabilmente sono alcuni dei riferimenti che sono nulli, ma senza alcuna informazione che ti dica quale, è difficile individuare il problema.

Rimuovi questa riga in modo che l'eccezione non venga sepolta silenziosamente:

Catch ex As Exception

In alternativa, inserisci del codice dopo di esso che gestisce effettivamente l'eccezione. In tal caso dovresti cambiare la linea in modo da non catturare la classe base Exception ma alcune classi di eccezione più specifiche come SqlException .

Con alcune informazioni su dove si verifica l'eccezione, è possibile individuare il problema.

Altri suggerimenti

Ti sei assicurato di aver inserito Runat = " server " e AutoPostBack = " True " tag?

Solo per essere sicuri, c'è un errore di battitura nel tuo codice solo nella domanda?

oncheckchanged o oncheckchange

-

Che cosa intendi con " aggiungo un'altra casella di controllo nel codice asp e un altro metodo con segno di spunta " ;? In realtà crei un altro gestore?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top