【发布时间】:2009-05-01 11:36:45
【问题描述】:
我正在使用在 VB.NET 1.1 框架中开发的旧 Web 应用程序。我遇到了复选框问题。
我的复选框有以下代码:
<asp:TemplateColumn HeaderText="Reviewed">
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
<ItemTemplate>
<asp:checkbox ID="chkAppRev" Runat="server"
OnCheckedChanged="onCheckChange" AutoPostBack="True" />
</ItemTemplate>
</asp:TemplateColumn>
这是我的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
这一切正常,直到我在 asp 代码中添加另一个复选框和另一个 oncheckchanged 方法,它似乎只是跳过了查询。
有人知道我错过了什么吗?
【问题讨论】:
-
我们如何通过在问题出现之前查看代码来发现问题?发布更改后的代码。
-
Hello Guffa 谢谢,由于字符限制,我无法再发布代码了,但我只是用不同的 ID 复制了复选框代码,这会破坏代码,因为它会跳过 OnCheckChanged 方法中的查询
-
@Deviant:由于这些值被转换为整数,因此实际上可以避免 SQL 注入。不过,参数化的解决方案会更好。