2015-10-22 132 views
0

我有這個頁面,用戶可以在其中修改它的信息。加載頁面時,會將用戶信息填充到文本輸入字段中。然後您可以更改您的信息並點擊保存。數據應該保存到數據庫中,並且由於刷新,這些數據也應該反映在文本字段中。但它不保存數據。如果我刪除了數據的讀數,點擊按鈕時會保存數據,但是當數據讀數存在時,數據不會被保存。保存到數據庫,然後從數據庫讀取數據不存在

這是在「讀出的數據」部分中的代碼,這是在Page_Load():

string loggedInUser = System.Web.HttpContext.Current.User.Identity.Name; 
    SqlConnection ConnectDb = new SqlConnection("Data Source=serverHere;Initial Catalog=catalogHere;User ID=userNameHere;Password=passwordHere;"); //Opretter database connection string 
    SqlDataReader infoReader = null; 
    SqlCommand getUserInfo = new SqlCommand("SELECT firstName,lastName,age,city,contact,bio FROM UserInfo WHERE userName = @userName", ConnectDb); 
    getUserInfo.Parameters.Add("@userName", loggedInUser); 
    ConnectDb.Open(); 
    infoReader = getUserInfo.ExecuteReader(); 
    infoReader.Read(); 
    { 
     tbInfoFirstName.Text = infoReader["firstName"].ToString(); 
     tbInfoLastname.Text = infoReader["lastName"].ToString(); 
     tbInfoAge.Text = infoReader["age"].ToString(); 
     tbInfoCity.Text = infoReader["city"].ToString(); 
     tbInfoKontakt.Text = infoReader["contact"].ToString(); 
     tbInfoAbout.Text = infoReader["bio"].ToString(); 
    }; 
    ConnectDb.Close(); 

這是爲保存按鈕的代碼:

string loggedInUser = System.Web.HttpContext.Current.User.Identity.Name; 

    SqlConnection ConnectDb = new SqlConnection("Data Source=serverHere;Initial Catalog=catalogHere;User ID=userNameHere;Password=passwordHere;"); 
    SqlCommand SavePersonInfo = new SqlCommand("UPDATE UserInfo SET firstName = @firstName,lastName = @lastName,age = @age,city = @city,contact = @contact,bio = @bio WHERE userName = @userName", ConnectDb); 
    SavePersonInfo.Parameters.AddWithValue("@firstName", tbInfoFirstName.Text); 
    SavePersonInfo.Parameters.AddWithValue("@lastName", tbInfoLastname.Text); 
    SavePersonInfo.Parameters.AddWithValue("@age", tbInfoAge.Text); 
    SavePersonInfo.Parameters.AddWithValue("@city", tbInfoCity.Text); 
    SavePersonInfo.Parameters.AddWithValue("@contact", tbInfoKontakt.Text); 
    SavePersonInfo.Parameters.AddWithValue("@bio", tbInfoAbout.Text); 
    SavePersonInfo.Parameters.AddWithValue("@userName", loggedInUser); 


    ConnectDb.Open(); 
    SavePersonInfo.ExecuteNonQuery(); 
    //Response.Redirect("Manage.aspx"); 
    ConnectDb.Close(); 

如所述,保存代碼在它自己的代碼上工作,但是當閱讀代碼也處於活動狀態時,例如:未被註釋掉。

+0

請調試哪一部分(選擇或插入)未能通過尋找到了一個工具數據庫。 –

+0

'Page_Load'在Webforms中的按鈕事件處理程序之前觸發。 – Jamiec

+0

是的,它會在頁面加載時讀取數據。但是,它不應該只做一次嗎? –

回答

0

我相信Page_Load事件在PostBack上的事件按鈕之前啓動。 在這種情況下,讀取的數據是舊數據,再次填充字段並最終再次記錄舊數據。 你檢查過了嗎?

如果是的話,把你的代碼在Page_Load中在if(的IsPostBack!):

public void Page_Load() { 
    // ... 

    if (!IsPostBack) { 
     // code read the data 
    } 
}