2014-12-19 49 views
0

我正在使用vb.net在Web應用程序中執行更新配置文件。起初,我讀取數據庫並將數據放入文本框,然後更改文本框內的數據並單擊「更新」按鈕。問題是當我點擊按鈕時,它不會更新我輸入到文本框中的最新值。它仍然會更新我從數據庫中讀取的值。數據庫無法更新vb.net中的文本框值

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)   Handles Me.Load 
    Dim item1 As String = CType(Session.Item("UserAccount"), String) 
    txtUsername.Enabled = False 

    conn.Open() 
    sql1 = "Select * From [Users] WHERE username='" & item1 & "'" 
    cmd = New SqlCommand(sql1, conn) 
    dr = cmd.ExecuteReader 
    dr.Read() 

    If dr.HasRows Then 
     txtUsername.Text = dr.Item("username") 
     password = dr.Item("password") 
     txtFirstName.Text = dr.Item("firstname") 
     txtLastName.Text = dr.Item("lastname") 
     txtDob.Text = dr.Item("dob") 
     txtEmail.Text = dr.Item("email") 
     txtNumber.Text = dr.Item("phone") 
     txtAddress.Text = dr.Item("address") 
    End If 
    dr.Close() 
    conn.Close() 
End Sub 

'以上圖片是我如何從數據庫中讀取的。

Protected Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click 
    Dim errFirstName As Boolean = True 
    Dim errLastName As Boolean = True 
    Dim errCPassword As Boolean = True 
    Dim errNPassword As Boolean = True 
    Dim errDob As Boolean = True 
    Dim errEmail As Boolean = True 
    Dim errNumber As Boolean = True 
    Dim errAddress As Boolean = True 
    Dim newFName, newLName, newPassword, newAddress, newNumber, newEmail, newDob As String 

    If txtFirstName.Text = "" Then 
     txtFirstName.BackColor = Drawing.Color.LightPink 
     lblFirstName.Text = "cannot be empty" 
    ElseIf Not Regex.Match(txtFirstName.Text, "^[a-zA-Z_ ]*$", RegexOptions.IgnoreCase).Success Then 

。 。 。

這是「更新」按鈕單擊。 這裏是我做的所有的值驗證在文本框中

  If errNPassword = False And errCPassword = False And errFirstName = False And   errLastName = False And errDob = False And errEmail = False And errNumber =    False And errAddress = False Then 
     conn.Open() 
     sql2 = "Update [Users] Set password='" & newPassword & "', firstname='" & newFName & "', lastname='" & newLName & "', dob='" & newDob & "', address='" & newAddress & "', email='" & newEmail & "', phone='" & newNumber & "' WHERE username='" & txtUsername.Text & "'" 

     cmd = New SqlCommand(sql2, conn) 
     cmd.ExecuteNonQuery() 

     conn.Close() 
     Response.Redirect(String.Format("~/index.aspx?")) 
    Else 
     Dim message As String = "Please correct the error above" 
     Dim sb As New System.Text.StringBuilder() 
     sb.Append("<script type = 'text/javascript'>") 
     sb.Append("window.onload=function(){") 
     sb.Append("alert('") 
     sb.Append(message) 
     sb.Append("')};") 
     sb.Append("</script>") 
     ClientScript.RegisterClientScriptBlock(Me.GetType(), "alert", sb.ToString()) 
     Exit Sub 'break 
    End If 

這是我的文本框的值更新到我的數據庫,其中的用戶名是匹配的。

+0

值是一樣的你從數據庫中獲得,或者你正在改變它?你必須在查詢 – Sandeep 2014-12-19 05:37:16

回答

1

你的頁面回發並運行相同的代碼,你必須增加If Not IsPostBack到Page_Load中txtUsername.Text的

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)   Handles Me.Load 

    If Not IsPostBack 
    Dim item1 As String = CType(Session.Item("UserAccount"), String) 
    txtUsername.Enabled = False 

    conn.Open() 
    sql1 = "Select * From [Users] WHERE username='" & item1 & "'" 
    cmd = New SqlCommand(sql1, conn) 
    dr = cmd.ExecuteReader 
    dr.Read() 

    If dr.HasRows Then 
     txtUsername.Text = dr.Item("username") 
     password = dr.Item("password") 
     txtFirstName.Text = dr.Item("firstname") 
     txtLastName.Text = dr.Item("lastname") 
     txtDob.Text = dr.Item("dob") 
     txtEmail.Text = dr.Item("email") 
     txtNumber.Text = dr.Item("phone") 
     txtAddress.Text = dr.Item("address") 
    End If 
    dr.Close() 
    conn.Close() 
    End If 
End Sub 
+0

的where子句中使用一些不可編輯的主鍵。感謝您的幫助:) TQTQ – 2014-12-19 06:25:59

+0

好的,第一次使用stackoverflow – 2014-12-19 07:36:20