将DataRow从DataTable中删除后如何存储以供进一步使用?

时间:2015-05-25 05:14:39

标签: c# datatable

我正在尝试在绑定到DataGrid的{​​{1}}中实施撤消重做。

DataTable

撤消后我应该能够在重做时将同一行添加回DataTable table; DataRow row; public InsertRowCommand(DataTable dt, DataRow dr) { table = dt; row = dr; } public void Execute(object param) { bool redo = (bool)param; if (redo) { table.Rows.Add(row); //RowNotInTable Exception } else { table.Rows.Remove(row); } } 。 我知道DataTable应始终与DataRow相关联。我该如何存储这些信息?

编辑:在发布建议后,我尝试执行以下操作

DataTable

在撤消时,当我尝试将行添加到新表时,抛出了Argument Exception(此行已经属于另一个表。)。

编辑:使用DataTable table; DataTable tableRemoved = new DataTable(); DataRow row; DataRow rowRemoved; public InsertRowCommand(DataTable dt, DataRow dr) { table = dt; row = dr; rowRemoved = dr; } public void Execute(object param) { bool redo = (bool)param; if (redo) { row = tableRemoved.Rows[0]; tableRemoved.Rows.Clear(); table.Rows.Add(row); } else { table.Rows.Remove(row); tableRemoved.Rows.Add(rowRemoved); //ArgumentException thrown } } 工作。

2 个答案:

答案 0 :(得分:2)

添加另一个没有DataTable tableRemoved;的{​​{1}}。

删除DataRow中的每一行后,将该行添加到此table,然后就可以得到你想要的内容。

答案 1 :(得分:0)

该实例与DataTable绑定。 ImportFunction()生成行的实际副本。

tableRemoved = table.Clone();
public void Execute(object param)
    {
        bool redo = (bool)param;
        if (redo)
        {
            //Yet to implement
        }
        else
        {
            tableRemoved.ImportRow(row);
            table.Rows.Remove(row);

        }
    }