relief122 Ответов: 1

Как удалить совпадающие строки из двух datagridview?


у меня есть две datagrid в форме datagridview1 и datagridview2 и одна кнопка с именем delete. Обе datagrid имеют несколько строк, где первый столбец "id" и второй столбец "name" одинаковы. Я хочу, чтобы если я удаляю строку из datagridview1, то она должна автоматически удалять соответствующую строку в datagridview2.я добавляю данные из текстовых полей. DataGridView1.Rows.Добавить (textbox1.Text, textbox2Text, textbox3Text).я не знаю, как это сделать? пожалуйста, скажите мне, как это сделать?

Что я уже пробовал:

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

CHill60

Что не так с кодом, который вы разместили? Что происходит или не происходит?

Кроме того, что это - datagrid или datagridview?

relief122

это практическое руководство

Maciej Los

Используйте виджет "ответить" (справа от Ника/логина).

1 Ответов

Рейтинг:
2

Maciej Los

Я бы попробовал что-нибудь вроде этого:

'for each row in DataGridView1; starting from the last one ;)
For i = DataGridView1.Rows.Count -1 To 0 Step -1
    'get specific row
    Dim srcRow As DataGridViewRow = DataGridView1.Rows(i)
    'find matched rows in DataGridView2
    Dim rowsToRemove = DataGridView2.Rows. _
        Cast(Of DataGridViewRow)(). _
        Where(Function(row) row.Cells("id").Value = srcRow.Cells("id").Value AndAlso row.Cells("name").Value = srcRow.Cells("name").Value). _
        ToList()
    'get the count of matched rows
    Dim x As Integer = rowsToRemove.Count
    'remove all matched rows from DataGridView2
    For Each dstRow In rowsToRemove
        DataGridView2.Rows.Remove(dstRow)
    Next
    'remove from DataGridView1 a row which had matched rows in DataGridView2
    If x>0 Then DataGridView1.Rows.Remove(srcRow)
Next


Примечание: приведенный выше код был написан непосредственно из моей головы... ;)