如何删除两个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的匹配行?的主要内容,如果未能解决你的问题,请参考以下文章