我正在尝试在绑定到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
}
}
工作。
答案 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);
}
}