你没有提供很多关于如何使用数据网格的信息,所以我必须做出一些假设。
如果您希望在用户从数据网格中删除一行时发生“软删除”,您需要启用行的删除。你可以通过设置CanUserDeleteRows
来做到这一点True
。
我假设您正在使用某种数据绑定来绑定数据网格中的行。当删除一行时,ItemsSource
从该集合中删除底层对象。如果您使用实现INotifyCollectionChanged
(如ObservableCollection
)的集合,则在发生这种情况时会触发一个事件。
DeletionDate
您可以通过设置为来监听该事件并相应地修改底层模型对象DateTime.Now
。然后,您必须调用entities.SaveChanges()
以将该更改推送到数据库。
private void ReloadData()
{
var viewSource = (CollectionViewSource)this.FindResource("aTableViewSource");
var aTableRows = new ObservableCollection<aTable>
(
this.entities.aTable
.Where(fibra => !fibra.DELETIONDATE.HasValue)
.Take(10)
.ToList()
);
fibras.CollectionChanged += EventHandler;
fibrasViewSource.Source = aTableRows;
}
void EventHandler(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Remove)
{
foreach(var oldItem in e.OldItems)
{
((aTable)oldItem).DELETIONDATE = DateTime.Now;
}
}
}