- - PR -
ASP.NETのDB更新について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-12-12 05:47
はじめまして、こんばんは。
私はASP.NET(VB.NET)でWebアプリケーションの開発を行っています。 当方、まったくの初心者でWeb開発なども経験がない為困りはてています。 以下ソース Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand '更新 Dim strSqlUpdate As String = "UPDATE T_syouhin SET カテゴリコード=@Category," & _ "価格=@Price, 画像パス=@Path, 商品名=@Name," & _ "小カテゴリコード=@Scategory, 数量=@Quantity " & _ "WHERE 商品コード=@ID" Dim cmd As New OleDb.OleDbCommand(strSqlUpdate, OleDbConnection1) Dim intID As Integer = DataGrid1.DataKeys(e.Item.ItemIndex) Dim strName As String = CType(e.Item.FindControl("nameTextBox"), TextBox).Text Dim intCategory As Integer = CType(e.Item.FindControl("DropdownList1"), DropDownList).SelectedValue Dim intSCategory As Integer = CType(e.Item.FindControl("DropdownList2"), DropDownList).SelectedValue Dim intQuantity As Integer = CType(e.Item.FindControl("quantityTextBox"), TextBox).Text Dim intPrice As Integer = CType(e.Item.FindControl("priceTextBox"), TextBox).Text Dim strPath As String = CType(e.Item.FindControl("pathTextBox"), TextBox).Text With cmd.Parameters .Add("@ID", intID) .Add("@Name", strName) .Add("@Category", intCategory) .Add("@SCategory", intSCategory) .Add("@Quantity", intQuantity) .Add("@Price", intPrice) .Add("@Path", strPath) End With OleDbConnection1.Open() cmd.ExecuteNonQuery() OleDbConnection1.Close() DataGrid1.EditItemIndex = -1 OleDbDataAdapter1.Fill(DataSet11) DataGrid1.DataBind() End Sub ----------------------------------------------- このような感じでDataGrid内の更新ボタンの処理を書いています。 今回皆様に御聞きしたいことは、 CtypeにてTemplateColumn列から値をひろってきています。 しかし、ブレークポイントをおいて確認しましたが、 TextBoxの値の変更前の値をひろってきてしまいます。 つまり、変更後の値をひろいたいのです。 TemplateColumn列のTextBoxChangeEventなど考えましたが、 良い方法がわかりません。 (結局値が変わらず更新処理も正しいのかわからない状況のなですが、、、) 処理順序はこのような感じです。 編集ボタン(DataGrid1_EditCommand) ↓ 編集可能状態(DataGrid1.EditItemIndex = e.Item.ItemIndex と DataGrid1.DataBind()) ↓ TextBoxに値入力 ↓ 更新ボタン(上記コード) ↓ 更新完了 とても初歩的なことと思いますが、どうかご教授いただけますようよろしくお願いします。 | ||||
|
投稿日時: 2005-12-12 06:19
更新ボタンのイベントハンドラが実行される前にDataGridがバインドされて 編集されたデータが編集前に戻っているようですね。Page_Loadイベントハンドラを再度チェックしてみたらどうでしょうか。 更新ボタン(上記コード) ↓←この時点ですでにDataGridがリフレッシュされている 更新完了 _________________ ASP.NET+Ajaxサンプル集 [ メッセージ編集済み 編集者: Access 編集日時 2005-12-13 06:24 ] | ||||
|
投稿日時: 2005-12-13 05:50
返信が遅くなってしまってすいません。 Accessさんのおっしゃる通りでした。 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load mstrCacheKey = "T_syouhin" & Request.Path If Not IsPostBack Then LoadData() 'Fill BindDataGrid() 'DataGridにバインド Else mdt = Cache(mstrCacheKey) If mdt Is Nothing Then LoadData() End If End If View_Mode() End Sub ご教授いただきありがとうございました。 |
1