2015-04-22 2 views
0

Проблема в том, что я пытаюсь обновить запись базы данных через ввод пользователя в текстовое поле.Текстовое поле сохраняет старое значение непосредственно перед процессом обновления asp.net

Приведенный ниже код показывает, как я вытягиваю данные, которые будут отображаться, и позволяет пользователю вносить изменения, а затем обновить его на кнопку мыши

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

} 

и вот код обновления

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

Переменная affecterows возвращает -1, а это значит, что нет обновленных записей.

Теперь, чтобы убедиться, что все в порядке, я попытался изменить содержимое текстового поля с именем alias_. К моему удивлению, после нажатия кнопки сохранения содержимое текстового поля alias_ возвращается к исходному контенту.

Есть ли какое-либо дополнительное свойство, которое необходимо установить?

спасибо.

+3

Используйте если (page.IsPostback!) На Pageload – Manu

+0

@Manu: Ваш комментарий является первым ответом на эту проблему , –

+0

Да. Я снова ответил на этот вопрос ниже. – Manu

ответ

3

Логика привязки данных в методе Page_Load связывает данные с событием click PostBack. Таким образом изменить метод Page_Load как,

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(); 
      } 
     } 
    } 
+0

спасибо за помощь – angelogogo

2

Подобно этому

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

    } 

}

+0

превосходное спасибо – angelogogo

+0

Anytime ..... :) – Manu

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