データグリッドの使用方法について多くの情報を提供していないので、いくつかの仮定を立てる必要があります。
ユーザーがデータグリッドから行を削除したときに「ソフト削除」を実行する場合は、行の削除を有効にする必要があります。これを行うには、に設定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;
}
}
}