繁体   English   中英

DataGridView:c#通用UserDeletingRow用于同一表单上的多个网格

[英]DataGridView: c# generic UserDeletingRow for multiple grids on same form

我在一个表格上有几个dgv。 它们都有绑定的数据源。 他们都需要具有“软”删除行的能力(不是真正删除行,而是将行标记为要删除并将其隐藏在网格中)。 删除将在以后发生。

我在网格上确实有一个过滤器: hiatusBindingSource.Filter = "IsDeleted = false"; 但是我不确定设置“ delete”标志后如何应用过滤器,因此我想出了以下代码来处理特定的dgv。

我只想拥有一个通用子即可处理所有dgv。 (我有多个表格有相同的问题。)

private void dgvHiatus_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
    e.Cancel = true;
    hiatusBindingSource.SuspendBinding();
    e.Row.Visible = false;
    hiatusBindingSource.ResumeBinding();
    ((Hiatus)e.Row.DataBoundItem).IsDeleted = true;
    SetFormMode(Globals.FormStatusMode.Save);
}

TIA

如果使用BindingSouce绑定所有DataGridView,并且用作BindingSource的数据源的类派生了定义了IsDeleted属性的公共基类,那么我想您可以使用以下代码为所有DataGrid制作一个事件处理程序

private void common_dgv_DeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
    e.Cancel = true;
    DataGridView dgv = sender as DataGridView;
    BindingSource bs = dgv.DataSource as BindingSource;
    bs.SuspendBinding();
    e.Row.Visible = false;
    bs.ResumeBinding();
    ((basex)e.Row.DataBoundItem).IsDeleted = true;
    SetFormMode(Globals.FormStatusMode.Save);
}

当然我无法测试它,但是如果您有任何困难,可以在这里评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM