2017-02-14 3 views
1

У меня есть TextBox с id = txtPlace и gridview. Если пользователь выбирает строку, поместите некоторую информацию в TextBox и нажмите «Сохранить». Информация должна заменить старые записи в базе данных (SQL)Как обновить выбранную строку в Gridview?

protected void btnSave_Click(object sender, EventArgs e) 
 
    { 
 
     var id = GridView2.SelectedDataKey.Values[0].ToString(); 
 
     string constr = ConfigurationManager.ConnectionStrings["con"].ConnectionString; 
 
     using (SqlConnection conn = new SqlConnection(constr)) 
 
     { 
 

 
      string query = "UPDATE user SET place= @place where ID = @ID "; 
 
      SqlCommand cmd = new SqlCommand(query, conn); 
 
      cmd.Parameters.AddWithValue("@place", txtPlace.Text); 
 
      cmd.Parameters.AddWithValue("@ID", id); 
 

 
     } 
 
    }

Но это не работает. Когда я нажимаю на сохранение, ничего не происходит.

+2

Вы не открыть соединение и вы не вызываете 'cmd.ExecuteNonQuery(); ' –

+0

см. Пример с запуском SqlCommand: https://msdn.microsoft.com/en-us/library/fksx3b4f.aspx – KernelMode

+0

В дополнение к изложенным выше вам также необходимо перезагрузить данные таблицы/источник данных. – Boldan

ответ

2

Вам не хватает пары важных шагов - открытие SqlConnection и выполнение SqlCommand. Поскольку это то, от чего вы не ожидаете результата, вы можете просто использовать ExecuteNonQuery(). Вероятно, вы должны обернуть SqlCommand в блоке using, так как это IDisposable, и ваша переменная неправильно названа.

protected void btnSave_Click(object sender, EventArgs e) 
{ 
    var id = GridView2.SelectedDataKey.Values[0].ToString(); 
    string constr = ConfigurationManager.ConnectionStrings["con"].ConnectionString; 
    using (SqlConnection conn = new SqlConnection(constr)) 
    { 
     conn.Open(); // actually connect to the server 
     string query = "UPDATE user SET place= @place where ID = @ID "; // change @D to @ID 
     using (SqlCommand cmd = new SqlCommand(query, conn)) 
     { 
      cmd.Parameters.AddWithValue("@place", txtPlace.Text); 
      cmd.Parameters.AddWithValue("@ID", id); 
      cmd.ExecuteNonQuery(); // actually execute your statement 
     } 
    } 
} 
0
string query = "UPDATE user SET place= @place where ID = @D "; 

Я предполагаю, что вы положили имя переменной неправильно, посмотрите @D отличается от @ID

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