Private Sub dg_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dg.UpdateCommand
'選択行
Dim row As DataGridItem = e.Item
'テキストボックス
Dim lnameText As TextBox = DirectCast(row.Cells(1).Controls(0), TextBox)
Dim fnameText As TextBox = DirectCast(row.Cells(2).Controls(0), TextBox)
Dim stateText As TextBox = DirectCast(row.Cells(3).Controls(0), TextBox)
'SQLクエリ文字列
Dim sb As System.Text.StringBuilder
Dim sql As String
'列のキー
Dim au_id As String = DirectCast(dg.DataKeys.Item(row.ItemIndex), String)
'接続
Dim cn As SqlConnection
'コマンド
Dim cmd As SqlCommand
Try
'SQL文字列を設定
sb = New System.Text.StringBuilder
sb.Append("UPDATE authors SET ")
sb.Append("au_lname = @au_lname, ")
sb.Append("au_fname = @au_fname, ")
sb.Append("state = @state ")
sb.Append("WHERE au_id = @au_id;")
sql = sb.ToString()
'SQLServer接続
cn = New SqlConnection(ConfigurationSettings.AppSettings.Item("ConnectionString"))
'コマンド
cmd = New SqlCommand(sql, cn)
'パラメータ設定
cmd.Parameters.Add("@au_lname", lnameText.Text) '←テキストボックスを変更してもここは元の値のまま
cmd.Parameters.Add("@au_fname", fnameText.Text)
cmd.Parameters.Add("@state", stateText.Text)
cmd.Parameters.Add("@au_id", au_id)
'クエリを実行
cn.Open()
Console.WriteLine(cmd.ExecuteNonQuery())
'編集モードを解除してデータバインディング
msg.Text = (dg.EditItemIndex + 1).ToString() & "番目の行が更新されました。"
dg.EditItemIndex = -1
Me.GridToBind()
Finally
If Not IsNothing(cmd) Then cmd.Dispose()
If Not IsNothing(cn) Then cn.Close()
End Try
End Sub
|