GridViewをコードで更新する方法(MySQL)
GridViewの更新はCommandFieldを追加するだけで簡単にできますが、MySQLだとそうはいきません。データソース構成ウィザードでUpdateCommandをうまく作れないためです。
ということでここでは、コードからGridViewを更新する方法をご紹介します。SQLServerであればこんなことは不要なんですけどね。
ここで紹介する画面イメージは以下のようになっています。

更新したい項目をTemplateFieldにしておきます。GridViewの列の編集から開くダイアログでフィールドを選択して「このフィールドを TemplateField に変換します。」リンクをクリックします。

これで基本的には準備完了です。あとはコードを書きます。どのイベントに書くかというと、GridViewのRowUpdaingに記述します。
ということでここでは、コードからGridViewを更新する方法をご紹介します。SQLServerであればこんなことは不要なんですけどね。
ここで紹介する画面イメージは以下のようになっています。

更新したい項目をTemplateFieldにしておきます。GridViewの列の編集から開くダイアログでフィールドを選択して「このフィールドを TemplateField に変換します。」リンクをクリックします。

これで基本的には準備完了です。あとはコードを書きます。どのイベントに書くかというと、GridViewのRowUpdaingに記述します。
Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As _
System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating
'更新対象の行をGridViewRowオブジェクトとして取得
Dim row As GridViewRow = GridView1.Rows(e.RowIndex)
'TemplateFieldのTextBoxのIDを指定して取得
Dim url As TextBox = CType(row.FindControl("TextBox1"), TextBox)
Dim title As TextBox = CType(row.FindControl("TextBox2"), TextBox)
Dim desc As TextBox = CType(row.FindControl("TextBox3"), TextBox)
'UpdateCommand設定
SqlDataSource1.UpdateCommand = "UPDATE bookmark.items SET url = ?, title = ?, _
description = ? WHERE (id = ?)"
'各パラメータを設定
SqlDataSource1.UpdateParameters.Add("param1", CStr(url.Text))
SqlDataSource1.UpdateParameters.Add("param2", CStr(title.Text))
SqlDataSource1.UpdateParameters.Add("param3", CStr(desc.Text))
SqlDataSource1.UpdateParameters.Add("param4", CStr(row.Cells(0).Text))
End Sub
これで更新が可能になります。
System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating
'更新対象の行をGridViewRowオブジェクトとして取得
Dim row As GridViewRow = GridView1.Rows(e.RowIndex)
'TemplateFieldのTextBoxのIDを指定して取得
Dim url As TextBox = CType(row.FindControl("TextBox1"), TextBox)
Dim title As TextBox = CType(row.FindControl("TextBox2"), TextBox)
Dim desc As TextBox = CType(row.FindControl("TextBox3"), TextBox)
'UpdateCommand設定
SqlDataSource1.UpdateCommand = "UPDATE bookmark.items SET url = ?, title = ?, _
description = ? WHERE (id = ?)"
'各パラメータを設定
SqlDataSource1.UpdateParameters.Add("param1", CStr(url.Text))
SqlDataSource1.UpdateParameters.Add("param2", CStr(title.Text))
SqlDataSource1.UpdateParameters.Add("param3", CStr(desc.Text))
SqlDataSource1.UpdateParameters.Add("param4", CStr(row.Cells(0).Text))
End Sub
トラックバック(0)
このブログ記事を参照しているブログ一覧: GridViewをコードで更新する方法(MySQL)
このブログ記事に対するトラックバックURL: http://blog.e-slas.com/weblog/mt-tb.cgi/14
