У меня есть простой 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);
}
}
}
Я ожидаю, что сетка ничего не сделает, если я выберу НЕТ!