Nastin
Nastin

Reputation: 41

Update the data in database in asp.net

I can successfully select the data I want to update to another page and populate my text boxes but if I set the selected values to my textbox and then try to update it wouldn't work and the same data is shown in database table.

However if I DO NOT set those values to my textboxes, then I can successfully update which is not what I am after.

I would like the user to see the data and record that s being updated

Here is my code:

protected void Page_Load(object sender, EventArgs e)
{
    UserClassesDataContext db= new UserClassesDataContext();

    var qr = from user in db.Users
             where user.user_id == new Guid(Request.QueryString["user_id"])
             select user;

    foreach (var q in qr)
    {
        TextBox1.Text = q.user_name;
        TextBox2.Text = q.password;
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    UserClassesDataContext db = new UserClassesDataContext();

    var qr = from user in db.Users
             where user.user_id == new Guid(Request.QueryString["user_id"])
             select user;

    foreach (var q in qr)
    {
        q.user_name = TextBox1.Text;
        q.password = TextBox2.Text;
    }

    db.SubmitChanges();

    Response.Redirect("Default.aspx");
}

What am I doing wrong?

Thanks

Upvotes: 0

Views: 37

Answers (1)

Shyju
Shyju

Reputation: 218892

The problem is, when you submit the button, the code inside Page_Load event is executing again.That means it is reading the data from your table and setting the value to textboxes(thus overwriting what user updated via the form ) and you are updating your record with this values (original values). So basically you are updating the rows with same values.

You can use the Page.IsPostBack property to determine whether the event is occurred by a postback(button click) or initial page load. This should fix it.

protected void Page_Load(object sender, EventArgs e)
{
  if(!Page.IsPostBack)
  {
    // to do: read and set to textbox here.
  }
}

Upvotes: 1

Related Questions