删除绑定数据行后如何恢复绑定数据行(将行添加回 DataGridView)?
当我单击 DataGridView 左侧的删除键时,会触发 UserDeletingRow 事件,我可以捕获从列表中删除的实体对象 (AnswerTable)。
private void visitorHostDataGridView_UserDeletingRow (object sender, DataGridViewRowCancelEventArgs e)
{
if (e.Row.DataBoundItem is VisitorHost)
{
DatatoDelete datatoDelete = new DatatoDelete (e.Row, e.Row.DataBoundItem as VisitorHost);
visitorHostsDataRowToDelete.Add (datatoDelete);
SetModified (); // turns on save and cancel buttons
}
}
稍后我在保存发生时进行删除
public override void OnSave ()
{
if (visitorHostsDataRowToDelete.Count > 0)
{
foreach (DatatoDelete item in visitorHostsDataRowToDelete)
{
_context.AnswerTables.DeleteObject (item.VisitorHostRecord as VisitorHost);
}
}
visitorhostBindingSource.EndEdit ();
_context.SaveChanges ();
ClearModified (); // turns off save and cancel
MessageBox.Show ("Saved");
}
同样,我的问题是如何恢复已删除的行(取消我的删除)并将对象添加回 DataGridView - 在我单击删除之后。(我不需要确认,我说的是我已经做了一些工作并意识到我犯了一个错误并想重新开始)我不想回到数据库,我不应该需要我有所有的数据,只是不知道如何使用它。
更新:
我自己试过 List.Add(EntityObject) 没有运气(见下文)。由于评论再次尝试。按以下顺序用这三件事更新了我的代码:
this.visitorhostBindingSource.DataSource = null;
this.visitorhostBindingSource.DataSource = _hosts;
this.visitorHostsDataGridView.Refresh ();
似乎解决了我遇到的问题,单独添加并没有让它显示在屏幕上。但不知道为什么我需要做我正在做的步骤。任何额外的想法都会很有用。
public override void OnCancel () // called from on click event of cancel button
{
foreach (DatatoDelete dataGridViewRow in visitorHostsDataRowToDelete)
{
_hosts.Add (dataGridViewRow.VisitorHostRecord);
}
visitorHostsDataRowToDelete.Clear();
_hosts.Sort ();
this.visitorhostBindingSource.DataSource = null;
this.visitorhostBindingSource.DataSource = _hosts;
this.visitorHostsDataGridView.Refresh ();
ClearModified (); //disable save and cancel buttons
}