Reputation: 723
The problem is, that I am trying to update my database record trough user's input on a Textbox.
The code below shows how I pull the data to be displayed, and let the user make changes, and then update it on the button click
protected void Page_Load(object sender, EventArgs e)
{
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@pid", Request.QueryString["perid"]));
SqlDataReader reader = SqlHelper.ExecuteReader(connection, "get_person_to_update", parameters.ToArray());
while (reader.Read())
{
fname.Text = reader["fname"].ToString();
mname.Text = reader["mname"].ToString();
lname.Text = reader["lname"].ToString();
qualifier.Text = reader["qualifier"].ToString();
alias_.Text = reader["alias"].ToString();
address.Text = reader["address"].ToString();
statussuspect.SelectedIndex = -1;
statussuspect.SelectedValue = reader["status_of_suspect"].ToString();
}
}
and here is the update code
protected void SAVEEDIT_Click(object sender, EventArgs e)
{
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@pid", Request.QueryString["perid"]));
parameters.Add(new SqlParameter("@fname", fname.Text.Trim().ToUpper()));
parameters.Add(new SqlParameter("@mname", mname.Text.Trim().ToUpper()));
parameters.Add(new SqlParameter("@lname", lname.Text.Trim().ToUpper()));
parameters.Add(new SqlParameter("@qualifier", qualifier.Text.Trim().ToUpper()));
parameters.Add(new SqlParameter("@alias_", alias_.Text.Trim().ToUpper()));
parameters.Add(new SqlParameter("@address", address.Text.Trim().ToUpper()));
parameters.Add(new SqlParameter("@status", statussuspect.SelectedValue));
int affecterows = SqlHelper.ExecuteNonQuery(connection, "update_person", parameters.ToArray());
if (affecterows > 0)
{
//prompt for success
if (statussuspect.SelectedValue == "DETAINED")
{
if ((!Page.ClientScript.IsStartupScriptRegistered("alert")))
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "notifyedit();", true);
}
}
if ((!Page.ClientScript.IsStartupScriptRegistered("alert")))
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "notifysuccess();", true);
}
}
}
The affecterows
variable is returning -1, which means that there are no records updated.
Now, just to make sure that all is ok, I tried changing the content of the Textbox named alias_
. To my surprise, upon clicking the save button the content of the alias_
Textbox returns to its original content.
Is there any additional property that needs to be set?
Thank you.
Upvotes: 0
Views: 1244
Reputation: 418
Like this
protected void Page_Load(object sender, EventArgs e)
{
if(!page.Ispostback)
{
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@pid", Request.QueryString["perid"]));
SqlDataReader reader = SqlHelper.ExecuteReader(connection, "get_person_to_update", parameters.ToArray());
while (reader.Read())
{
fname.Text = reader["fname"].ToString();
mname.Text = reader["mname"].ToString();
lname.Text = reader["lname"].ToString();
qualifier.Text = reader["qualifier"].ToString();
alias_.Text = reader["alias"].ToString();
address.Text = reader["address"].ToString();
statussuspect.SelectedIndex = -1;
statussuspect.SelectedValue = reader["status_of_suspect"].ToString();
}
}
}
Upvotes: 2
Reputation: 2125
The Data binding logic in the Page_Load
method binds the data on the click event PostBack
. So change the Page_Load
method like,
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@pid", Request.QueryString["perid"]));
SqlDataReader reader = SqlHelper.ExecuteReader(connection, "get_person_to_update", parameters.ToArray());
while (reader.Read())
{
fname.Text = reader["fname"].ToString();
mname.Text = reader["mname"].ToString();
lname.Text = reader["lname"].ToString();
qualifier.Text = reader["qualifier"].ToString();
alias_.Text = reader["alias"].ToString();
address.Text = reader["address"].ToString();
statussuspect.SelectedIndex = -1;
statussuspect.SelectedValue = reader["status_of_suspect"].ToString();
}
}
}
Upvotes: 3