如何将数据从数据库显示到文本框中,并进行更新

我可以在从sql数据库中检索数据后在我的文本框,下拉列表中显示我的数据,但是当我继续我的更新按钮时,在文本框或下拉列表中编辑的信息将不会更新到数据库中。 我尝试删除页面加载中的代码,并手动重新键入所有数据,它可以更新。 我想要的只是从数据库中检索数据并将其显示在文本框中,并且可以在从文本框进行一些更改后更新到数据库中。 有人可以帮我吗? 谢谢。

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Configuration; using System.Data; public partial class UpdateCustomerDetails : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlConnection con1 = new SqlConnection("Data Source=USER-PC;Initial Catalog=webservice_database;Integrated Security=True"); DataTable dt = new DataTable(); con1.Open(); SqlDataReader myReader = null; SqlCommand myCommand = new SqlCommand("select * from customer_registration where username='" + Session["username"] + "'", con1); myReader = myCommand.ExecuteReader(); while (myReader.Read()) { TextBoxPassword.Text = (myReader["password"].ToString()); TextBoxRPassword.Text = (myReader["retypepassword"].ToString()); DropDownListGender.SelectedItem.Text = (myReader["gender"].ToString()); DropDownListMonth.Text = (myReader["birth"].ToString()); DropDownListYear.Text = (myReader["birth"].ToString()); TextBoxAddress.Text = (myReader["address"].ToString()); TextBoxCity.Text = (myReader["city"].ToString()); DropDownListCountry.SelectedItem.Text = (myReader["country"].ToString()); TextBoxPostcode.Text = (myReader["postcode"].ToString()); TextBoxEmail.Text = (myReader["email"].ToString()); TextBoxCarno.Text = (myReader["carno"].ToString()); } con1.Close(); } protected void Button1_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection("Data Source=USER-PC;Initial Catalog=webservice_database;Integrated Security=True"); SqlCommand cmd = new SqlCommand("UPDATE customer_registration SET password = @password, retypepassword = @retypepassword, gender = @gender, birth = @birth, address = @address, city = @city, country = @country, postcode = @postcode, email = @email, carno = @carno where username='" + Session["username"] + "'", con); con.Open(); cmd.Parameters.AddWithValue("@password", TextBoxPassword.Text); cmd.Parameters.AddWithValue("@retypepassword", TextBoxRPassword.Text); cmd.Parameters.AddWithValue("@gender", DropDownListGender.Text); cmd.Parameters.AddWithValue("@birth", DropDownListDay.Text + DropDownListMonth.Text + DropDownListYear.Text); cmd.Parameters.AddWithValue("@address", TextBoxAddress.Text); cmd.Parameters.AddWithValue("@city", TextBoxCity.Text); cmd.Parameters.AddWithValue("@country", DropDownListCountry.Text); cmd.Parameters.AddWithValue("@postcode", TextBoxPostcode.Text); cmd.Parameters.AddWithValue("@email", TextBoxEmail.Text); cmd.Parameters.AddWithValue("@carno", TextBoxCarno.Text); cmd.ExecuteNonQuery(); con.Close(); if (IsPostBack) { Response.Redirect("UpdateSuccess.aspx"); } } 

将所有语句换行!IsPostBack页面加载时!IsPostBack条件。

 protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { // all statements } } 

这将解决您的问题。

 protected void Page_Load(object sender, EventArgs e) { DropDownTitle(); } protected void DropDownTitle() { if (!Page.IsPostBack) { string connection = System.Configuration.ConfigurationManager.ConnectionStrings["AuzineConnection"].ConnectionString; string selectSQL = "select DISTINCT ForumTitlesID,ForumTitles from ForumTtitle"; SqlConnection con = new SqlConnection(connection); SqlCommand cmd = new SqlCommand(selectSQL, con); SqlDataReader reader; try { ListItem newItem = new ListItem(); newItem.Text = "Select"; newItem.Value = "0"; ForumTitleList.Items.Add(newItem); con.Open(); reader = cmd.ExecuteReader(); while (reader.Read()) { ListItem newItem1 = new ListItem(); newItem1.Text = reader["ForumTitles"].ToString(); newItem1.Value = reader["ForumTitlesID"].ToString(); ForumTitleList.Items.Add(newItem1); } reader.Close(); reader.Dispose(); con.Close(); con.Dispose(); cmd.Dispose(); } catch (Exception ex) { Response.Write(ex.Message); } } } 

答案是.IsPostBack由@Kundan Singh .IsPostBack建议。 只需添加它,将代码移到与Page_Load不同的方法中

 private void PopulateFields() { using(SqlConnection con1 = new SqlConnection("Data Source=USER-PC;Initial Catalog=webservice_database;Integrated Security=True")) { DataTable dt = new DataTable(); con1.Open(); SqlDataReader myReader = null; SqlCommand myCommand = new SqlCommand("select * from customer_registration where username='" + Session["username"] + "'", con1); myReader = myCommand.ExecuteReader(); while (myReader.Read()) { TextBoxPassword.Text = (myReader["password"].ToString()); TextBoxRPassword.Text = (myReader["retypepassword"].ToString()); DropDownListGender.SelectedItem.Text = (myReader["gender"].ToString()); DropDownListMonth.Text = (myReader["birth"].ToString()); DropDownListYear.Text = (myReader["birth"].ToString()); TextBoxAddress.Text = (myReader["address"].ToString()); TextBoxCity.Text = (myReader["city"].ToString()); DropDownListCountry.SelectedItem.Text = (myReader["country"].ToString()); TextBoxPostcode.Text = (myReader["postcode"].ToString()); TextBoxEmail.Text = (myReader["email"].ToString()); TextBoxCarno.Text = (myReader["carno"].ToString()); } con1.Close(); }//end using } 

然后在你的Page_Load中调用它

 protected void Page_Load(object sender, EventArgs e) { if(!Page.IsPostBack) { PopulateFields(); } } 

填充Page Init事件中的文本框值,而不是使用Postback。

 protected void Page_Init(object sender, EventArgs e) { DropDownTitle(); }