Строка исчезает из gridview после вызова события UserDeletingRow и ответа НЕТ, если я хочу удалить его - PullRequest
0 голосов
/ 19 июня 2019

У меня есть простой DataGridView в приложении WinForm, где я использую событие UserDeletingRow в виде сетки. Когда я выделяю строку, которую хочу удалить, она, конечно же, запрашивает, действительно ли я хочу удалить строку, но если я отвечаю «НЕТ», строка исчезает из таблицы. Он не удаляется из базы данных, но исчезает из сетки. Если я выхожу из этой формы и возвращаюсь, ряд снова возвращается! Почему это исчезает в первую очередь?

Код, конечно, говорит: если (result == DialogResult.Yes), то я выполняю инструкцию DELETE. Эта часть отлично работает для избавления от строки из базы данных. Но я отвечаю НЕТ!

private void DataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
  if (dataGridView1.CurrentRow.Cells["ID"].Value != DBNull.Value)
  {
    DialogResult result = MessageBox.Show("Are you sure you want to delete speaker -- " + dataGridView1.CurrentRow.Cells["FIRSTNAME"].Value + " " + dataGridView1.CurrentRow.Cells["LASTNAME"].Value + "?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);

    if (result == DialogResult.Yes)  
    {  
      using (SQLiteCommand cmd = Business.Business.GetSqliteCommand())  
      {  
        string sql = "DELETE FROM Speakers WHERE ID = " + "'" + dataGridView1.CurrentRow.Cells["ID"].Value + "'";  
        cmd.CommandText = sql;  
        cmd.ExecuteNonQuery();  

        Main_Reload(null, null);  
      }  
    }  
  }  

Я ожидаю, что сетка ничего не сделает, если я выберу НЕТ!

1 Ответ

0 голосов
/ 19 июня 2019

Добавить оператор else в ваш блок IF

else 
{
    e.Cancel = true;
    Main_Reload(null, null);
}

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.datagridviewrowcanceleventargs?view=netframework-4.8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...