Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在DataGridView中实现软删除_C#_Winforms_Datagrid_Datagridview_Soft Delete - Fatal编程技术网

C# 如何在DataGridView中实现软删除

C# 如何在DataGridView中实现软删除,c#,winforms,datagrid,datagridview,soft-delete,C#,Winforms,Datagrid,Datagridview,Soft Delete,我有一个绑定到对象数据源的DataGridView。对象有一个属性“IsDeleted”。当用户按delete键,或单击delete按钮,或以其他方式删除一行时,我希望设置“IsDeleted”标志,而不是删除该行。(然后我希望datagridview更新) 实现这种行为所需的单点联系是什么 我不想尝试单独处理所有用户路径。您可以手动处理事件UserDeletingRow以取消它,并执行您自己的删除,如下所示: private void dataGridView1_UserDeletingRow

我有一个绑定到对象数据源的DataGridView。对象有一个属性“IsDeleted”。当用户按delete键,或单击delete按钮,或以其他方式删除一行时,我希望设置“IsDeleted”标志,而不是删除该行。(然后我希望datagridview更新)

实现这种行为所需的单点联系是什么


我不想尝试单独处理所有用户路径。

您可以手动处理事件
UserDeletingRow
取消它,并执行您自己的
删除
,如下所示:

private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e){
   e.Cancel = true;//Cancel the actual deletion of row
   //You can just hide the row instead
   e.Row.Visible = false;
   //Then set the IsDeleted of the underlying data bound item to true
   ((YourObject)e.Row.DataBoundItem).IsDeleted = true;
}

您刚才说您的对象有一个名为
IsDeleted
的属性,因此我认为它名为
YourObject
,您必须将
DataBoundItem
强制转换为该类型,以便访问
IsDeleted
属性并将其设置为
true
。仅此而已。

删除
行将由您的代码完成,所以只需删除代码即可完成吗?或者您不想再出现
已删除的行
?删除该行不是由我的代码完成的,而是由DataGridView本身完成的。软删除对象将被筛选器删除。通过将
AllowUserToDeleteRows
设置为
false
,可以防止用户删除datagridview中的任何行。但我希望他们能够删除该行,我只想更改删除的方式。谢谢;但这不会改变删除按钮的行为。@Danieloftabl什么
删除按钮
?删除按钮是您的还是某些导航控件的?你是说
仍然被删除/删除吗?是的,它是默认的导航控件;默认导航控件具有这种效果。@Danieloftabl您是否使用
BindingNavigator