用户删除数据表上的行(自动删除行)

本文关键字:删除行 删除 数据表 用户 | 更新日期: 2023-09-27 18:33:29

在我的应用程序中,我有一个名为ContractsDataGridView

我有一个执行许多步骤的Contracts_UserDeletingRow方法。

首先,它会生成一个MessageBox来确认操作。如果确认 - 该行将被删除,一切正常。

但是,如果用户选择 Cancel ,该行将自动从视图中删除。服务器端没有删除,只是隐藏了。

为了解决这个问题,我试过这个;

if (MessageBox.Show("Are you sure you want to delete?", "Verify Delete", MessageBoxButtons.OKCancel) == DialogResult.OK)
{Update the record in background...}
    else { GetContractLevels(); this.Activate(); }

GetContractLevels()方法从源刷新视图,为什么不执行?当我然后从按钮单击运行相同的方法 - 它可以工作。

用户删除数据表上的行(自动删除行)

你必须设置e.Cancel = true

if (MessageBox.Show("Are you sure you want to delete?", "Verify Delete", MessageBoxButtons.OKCancel) == DialogResult.OK)
{  Update the record in background...  }
else { 
    e.Cancel = true;//Do this to cancel the physical deleting row of user
    GetContractLevels(); 
    this.Activate(); 
}

你有数据集吗?如果是这样,那么你可以看看你的 Main() 函数,在 InitializeComponent() 下面应该有一行,将数据加载到你的 datagridview 中。请使用该代码更新您的 datagridview,以便在用户取消事务时,datagridview 将更新,就好像什么都没发生一样。

我意识到我正在刷新删除方法中的源代码,这意味着它会刷新但无论如何都会删除,添加了以下方法解决了它。

这将在删除行后刷新。

不过,在我看来,王王有一个更干净的解决方案。

private void Contracts_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
            {
                GetContractLevels();
            }