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

时间:2013-10-01 08:30:00

标签: c# winforms

在我的应用程序中,我有一个名为DataGridView的{​​{1}}。

我有Contracts的方法,它执行了许多步骤..

首先,它会生成一个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(); } 方法从源代码刷新视图,它怎么不执行?然后,当我从按钮单击运行相同的方法时 - 它可以工作。

3 个答案:

答案 0 :(得分:1)

您必须设置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(); 
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

删除一行后刷新。

然而,King King在我看来有更清洁的解决方案。

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