在我的应用程序中,我有一个名为Contracts
的DataGridView
。
我有一个执行许多步骤的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();
}