撤消DataGridView上已删除的行

时间:2016-07-29 19:35:12

标签: c# datagridview undo

我有一个从Excel文件导入数据的DataGridView。在表单上,​​它有一个删除按钮,其中如果从DataGridView表中选择一行,则单击删除按钮,删除所选行。

有没有办法'撤消'删除?我需要制作一个正常运行的撤销按钮。

2 个答案:

答案 0 :(得分:0)

DataGridView有一个名为UserDeletingRow的事件,该事件在实际删除该行之前发生,从而使您可以取消删除过程。

private void dgv1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
    e.Cancel = MessageBox.Show("Really delete ?", "", MessageBoxButtons.OKCancel) == DialogResult.Cancel;
}

答案 1 :(得分:-1)

您可以使用DataGridView.UserDeletingRow Event在删除行之前保存行值,然后在撤消时插入包含已保存值的新行。或者只是隐藏行并在撤消时取消隐藏它。

如果您对07-30 03:59:04.407 11837-11837/com.plan.aplikacjamobilna W/System.err: com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class com.plan.aplikacjamobilna.WeightDataJson]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?) 07-30 03:59:04.407 11837-11837/com.plan.aplikacjamobilna W/System.err: at [Source: [{"weightValue":"14","dateValue":"213123"}]; line: 1, column: 3] (through reference chain: java.util.ArrayList[0]) 使用DataTable,那么您可以将DataGridView.DataSource保存在DataRow事件中,例如

DataGridView.UserDeletingRow

然后在撤消时尝试lastDeletedDataRow = e.Row.DataBoundItem as DataRow;