特定のレコードを更新できるように、データ グリッドを持つフォームから別の Web フォームに変数 (レコード ID) を渡しています。私の問題は、レコードを更新しようとしたときに発生します。テキストボックスの値は新しいデータに変更されますが、プログラムは変更が行われる前にテキストボックスの値を渡しています。私の簡単な解決策は、ボタンにポストバックを追加して、これが違いを生むかどうかを確認することでした. これは、レコード ID フィールドをハードコーディングした場合にのみ正常に機能し、ポストバックにより、新しいフォームに渡したパラメーターが消去されます。
これに対処する方法を知っている人はいますか?ご覧のとおり、私は ASP.Net を初めて使用します。
これは、ボタンの ASP コードです。
asp:Button ID="btnSaveChanges" runat="server" Text="Save Changes" postbackurl="~/EditContact.aspx" Width="101px"
そして、これがレコードを更新する必要がある VB コードです。
Dim tempContactID As String = Request.QueryString().ToString
Dim objConnection As OleDbConnection = Nothing
Dim objCmd As OleDbCommand = Nothing
Dim strConnection As String, strSQL As String
'Connection String to Database
strConnection = "provider=SQLOLEDB;data source=HP-G640;Database=Contacts;user ID=contactsUser;password=password;"
objConnection = New OleDbConnection(strConnection)
objConnection.ConnectionString = strConnection
objConnection.Open()
strSQL = "update ContactDetails set ContactFirstName = '" & txtFirstName.Text & "', ContactMiddleName = '" & txtMiddleName.Text & "',ContactLastName = '" & txtLastName.Text & "', ContactAddress = '" & txtAddress.Text & "', ContactCity = '" & txtCity.Text & "', ContactState = '" & txtState.Text & "', ContactZipCode = '" & txtZipCode.Text & "', ContactPhone = '" & txtHomePhone.Text & "', ContactCell = '" & txtCell.Text & "', ContactEmail='" & txtEmail.Text & "' where ContactID = 6"
objCmd = New OleDbCommand(strSQL, objConnection)
objCmd.ExecuteNonQuery()
'Close Connection
objConnection.Close()
Response.Write("Record updated successfully")