Удалить одну и ту же строку в разных представлениях сетки - PullRequest
0 голосов
/ 08 мая 2020

Если у меня есть два зеркальных GridView, то есть они идентичны, как я могу удалить одну и ту же строку в обоих GridView? То есть, если вы удалите строку 7 в Gridview1, строка 7 будет удалена в GridView2 тоже.

Я сделал этот код.

        Dim UnitIndex As Integer()

        Dim selectedRows() As Integer = GridView1.GetSelectedRows()

        For Each rowHandle As Integer In selectedRows
            If rowHandle >= 0 Then
                UnitIndex = GridView1.GetSelectedRows
            End If
        Next rowHandle

        Dim p As Integer = UnitIndex
        GridView2.DeleteRow(p)

Пожалуйста, не могли бы вы посоветовать мне это сделать?

Заранее спасибо.

1 Ответ

0 голосов
/ 14 мая 2020

Вы можете связать один и тот же источник, и если строка будет удалена, другая будет также удалена.

Или вы можете обработать ListChanged Event . Когда элемент удален, удалите другой.

Ваш код такой.

 Class SurroundingClass
    Private _source1 As BindingList(Of T)

    Public Property Source1 As BindingList(Of T)
        Get
            Return _source1
        End Get
        Set(ByVal value As BindingList(Of T))

            If _source1 <> value Then
                _source1.RaiseListChangedEvents = True
                _source1.ListChanged -= AddressOf Source1_ListChanged
                _source1.ListChanged += AddressOf Source1_ListChanged
                _source1 = value
            End If
        End Set
    End Property

    Private _source2 As BindingList(Of T)

    Public Property Source2 As BindingList(Of T)
        Get
            Return _source2
        End Get
        Set(ByVal value As BindingList(Of T))

            If _source2 <> value Then
                _source2.RaiseListChangedEvents = True
                _source2.ListChanged -= AddressOf Source2_ListChanged
                _source2.ListChanged += AddressOf Source2_ListChanged
                _source2 = value
            End If
        End Set
    End Property

    Private Sub Source1_ListChanged(ByVal sender As Object, ByVal e As ListChangedEventArgs)
        If e.ListChangedType = ListChangedType.ItemDeleted Then
            Source2.RaiseListChangedEvents = False
            Source2.RemoveAt(e.OldIndex)
            Source2.RaiseListChangedEvents = True
        End If
    End Sub

    Private Sub Source2_ListChanged(ByVal sender As Object, ByVal e As ListChangedEventArgs)
        If e.ListChangedType = ListChangedType.ItemDeleted Then
            Source1.RaiseListChangedEvents = False
            Source1.RemoveAt(e.OldIndex)
            Source1.RaiseListChangedEvents = True
        End If
    End Sub
End Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...