2016-04-28 2 views
0

Я могу успешно выбрать данные, которые хочу обновить, на другую страницу и заполнить мои текстовые поля, но если я установил выбранные значения в свое текстовое поле, а затем попытаюсь обновить его, это не сработает и те же данные отображаются в таблице базы данных.Обновление данных в базе данных в asp.net

Однако, если я НЕ устанавливаю эти значения в свои текстовые поля, то я могу успешно обновить, что не то, что я хочу.

Я хотел бы пользователю просматривать данные и записи, что ы обновляется

Вот мой код:

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"); 
} 

Что я делаю неправильно?

Благодаря

ответ

1

Проблема заключается в том, когда вы передаете кнопку, код внутри Page_Load события выполнения again.That означает, что он читает данные из таблицы и установите значение текстовых полей (таким образом, перезапись, что пользователь обновил через форму), и вы обновляете свою запись с помощью этих значений (исходные значения). Поэтому в основном вы обновляете строки с одинаковыми значениями.

Свойство Page.IsPostBack можно использовать, чтобы определить, произошло ли событие путем обратной передачи (нажатия кнопки) или загрузки начальной страницы. Это должно исправить это.

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

Спасибо, он работал именно так, как я хотел. – Nastin

Смежные вопросы