在调用UserDeletingRow事件并回答否(如果我要删除它)后,该行从gridview中消失了

时间:2019-06-19 02:03:17

标签: c# datagridview

我在WinForm应用程序上有一个简单的DataGridView,在其中我正在gridview上使用UserDeletingRow事件。当我突出显示要删除的行时,它会提示我是否要真正删除该行,但是如果我回答“否”,则该行将从网格中消失。它没有从数据库中删除,但是从网格中消失了。如果我退出此表格,然后返回,则该行又回来了!为什么它首先消失?

代码当然会说:if(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 :(得分:0)

在您的IF块中添加else语句

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

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