私はcheckbox_CheckedChangedというルーチンを呼び出すチェックボックス付きのデータグリッドを持っています。ここまでは順調ですね。私はデータビューの別の列の値を計算することができました。これにより、私が扱っている行のIDを確認することができます。vb.net SQLクエリはSQLサーバで動作しますが、チェックボックスから呼び出された場合は動作しません
私は、チェックボックスの初期値を定義する列の値を変更しようとしていますが、vb.netによって呼び出されたときに私が書いたSQLは機能しません。しかし、手動でSQLサーバーに。
ここに私のコードが背後にあるのです:
Public Sub checkbox_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) 'Handles checkbox.CheckedChanged
Dim connectionString As String = WebConfigurationManager.ConnectionStrings("edinsec").ConnectionString
Dim box As CheckBox = DirectCast(sender, CheckBox)
Dim tblcell As TableCell = CType(box.Parent, TableCell)
Dim dgRow As GridViewRow = CType(tblcell.Parent, GridViewRow)
Dim msgId As Integer = unreadMessages.Rows(dgRow.DataItemIndex).Cells(0).Text
Dim insertSQL As String
If box.Checked = True Then
insertSQL = "UPDATE messages"
insertSQL &= "SET readit = 0"
insertSQL &= "WHERE msgid = @msgId"
Else
insertSQL = "UPDATE messages"
insertSQL &= "SET readit = 1"
insertSQL &= "WHERE msgid = @msgId"
End If
Using con As New SqlConnection(connectionString)
Dim cmd As New SqlCommand(insertSQL, con)
cmd.Parameters.AddWithValue("@msgId", msgId)
Try
con.Open()
cmd.ExecuteNonQuery()
Catch Err As SqlException
MsgBox("Error", 65584, "Insertion Error")
End Try
con.Close()
End Using
End Sub
アイデアがクリックされたときに、チェックボックスがその反対に、データベースに「readit」の値を反転することです。しかし、SqlExceptionにジャンプし続けるので、エラーメッセージが表示されます。
チェックボックスのためのaspxコードはこれです:
<asp:TemplateField HeaderText="readit" SortExpression="readit">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" OnCheckedChanged="checkbox_CheckedChanged" Checked='<%# Bind("readit") %>'
Enabled="true" />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true" OnCheckedChanged="checkbox_CheckedChanged" Checked='<%# Bind("readit") %>' />
</EditItemTemplate>
</asp:TemplateField>
すべてのヘルプははるかに高く評価されるだろう。 Visual Studio(2008)では、この状況ではSQLエラーのがというゼロのフィードバックを与えています。これはかなり怒っています。
クラウス - 多くのありがとう、それはSQLを実行するために働いた。トラブルは、私は 'スティック'への変更を取得するためにチェックボックスを2回クリックする必要があります...編集:私はちょうど間違った方法でロジックを持っていた... noob間違い:) – melat0nin