0
データベースを更新しましたが、他のものではない最初の行に対してのみ行います。私の更新ボタンは、最初にチェックされた行だけを更新します。その他のものはありません。
Protected Sub btnUpdate_Click(ByVal sender As Object, ByVal e As EventArgs)
For Each row As GridViewRow In GridView6.Rows
' Selects the text from the TextBox
Dim selectedcheck As CheckBox = CType(row.FindControl("chkselect"), CheckBox)
If selectedcheck.Checked = True Then
Dim id As Label = CType(row.FindControl("id"), Label)
cmd.Parameters.AddWithValue("@id", id.Text)
cmd.Parameters.AddWithValue("@compby", txtagent.Text)
cmd.Parameters.AddWithValue("@compdate", lbldate.Text)
cmd.Parameters.AddWithValue("@comments", txtcomments.Text)
cmd.CommandText = "dbo.updatetasks"
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = conn
conn.Open()
cmd.BeginExecuteNonQuery()
conn.Close()
End If
Next
End Sub
UPDATE dashboardtasks
SET compby = @compby,
comments = @comments,
compdate = @compdate
WHERE id = @id;
'BeginExecuteNonQuery'は、コマンドの実行が完了する前に戻ります。あなたは確かにすぐ後に接続を閉じるべきではありません。コマンドを完了させるには、同期ExecuteNonQueryを使用します。あなたは非同期コマンドを引き続き使用したい場合は、接続を開いたままにしたIAsyncResultがBeginExecuteNonQuery' 'から返さキャプチャし、それをやっているかを理解するために、ストアドプロシージャのコードが必要になる場合がありますEndExecuteNonQuery' –
'で、後でそれを使用する必要があります。あなたはキーIDで行を更新しているようです。 idが一意の場合は、1つのレコードのみを更新します。あなたが一連のidフィールドをループしていないのを見て、私はそれが期待どおりに動作すると言います。しかし、ストアドプロシージャを見ることは役に立ちます。 – anothershrubery
私は私のストアドプロシージャコードを追加しました、私はアイデンティティを介してループですか? – MyHeadHurts