如何删除两个datagridview的匹配行?

Posted

技术标签:

【中文标题】如何删除两个datagridview的匹配行?【英文标题】:how to delete matching rows of two datagridview? 【发布时间】:2020-04-20 15:08:15 【问题描述】:

我有两个datagridview 表单datagridview1 和datagridview2 和一个名为delete 的按钮。两个 datagridview 都有一些行,其中第一列 id 和第二列名称相同。我想如果我从 datagridview1 中删除一行,那么它应该自动删除 datagridview2 中的匹配行。我不知道该怎么做?请告诉我该怎么做?

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    For Each rw As DataGridViewRow In DataGridView2.SelectedRows

        Dim x As String
        x = rw.Cells(0).Value
        For Each row As DataGridViewRow In DataGridView1.SelectedRows
            DataGridView1.Rows.Remove(row)
            If row.Cells(0).Value = x Then
                DataGridView2.Rows.Remove(row)
            End If
        Next
    Next
End Sub

【问题讨论】:

这些控件的DataSource是什么? 我正在从文本框中添加数据。 DataGridView1.Rows.Add (textbox1.Text, textbox2Text, textbox3Text) 【参考方案1】:

DataGridView1 中删除选定的行,并从DataGridView2 中删除匹配项(如果有)。匹配由Id 列标识,这是两个 DGV 中的第一列。如果这听起来不错,那么您可以通过 LINQ 查询来实现,如下所示:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim q = From x In dataGridView1.SelectedRows.Cast(Of DataGridViewRow).
                Where(Function(r) Not r.IsNewRow),
                y In dataGridView2.Rows.Cast(Of DataGridViewRow).
                Where(Function(r) Not r.IsNewRow AndAlso
                    r.Cells(0).Value.ToString = x.Cells(0).Value.ToString).
                DefaultIfEmpty
            Select x, y

    For Each t In q
        dataGridView1.Rows.Remove(t.x)
        If t.y IsNot Nothing Then dataGridView2.Rows.Remove(t.y)
    Next
End Sub

【讨论】:

以上是关于如何删除两个datagridview的匹配行?的主要内容,如果未能解决你的问题,请参考以下文章

C# - 删除行后如何刷新 DataGridView

如果列索引 0 包含特定字符串 C#,如何隐藏整个 DataGridview 行

datagridview中删除行并更新数据库

保存 DataGridView

如何比较两个datagridview行单元格的值?

C#中如何对datagridview 表格中的数据进行筛选,查找包含某个字段的行数据,求范例代码 感谢啊。