0

特定のレコードを更新できるように、データ グリッドを持つフォームから別の 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")
4

1 に答える 1

0

ボタンでポストバック URL の代わりにイベントを使用します。

<asp:Button ID="btnSaveChanges" runat="server" Text="Save Changes" OnClick="btnSaveChanges_Click"
    Width="101px" />

コードビハインド

void btnSaveChanges_Click(object sender, EventArgs e)
    {
        //do your work
    }
于 2013-10-11T20:21:10.033 に答える