Удалить строку DataTable, источник выбранной строки DataGridView, по нажатию кнопки - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть эта таблица данных с именем ProductTable, в которой есть 3 столбца, которые служат источником для DataGridView ProductGrid.

При нажатии на кнопку DeleteRow пользователь должен удалить строку в ProductTable, которая соответствует выбранной строке в ProductGrid

Я пытался с помощью

Private Sub DeleteRow_Click(sender As Object, e As EventArgs) Handles DeleteRow.Click

    Dim i As Integer

    For i = 0 To 100
        Try
            ProductTable.Rows(i).Delete()
        Catch ex As Exception
        End Try
    Next

End Sub

Но я упускаю что-то очевидное: условие, которое позволяет мне выбрать строку в таблице данных, которая будет соответствовать ProductGrid.SelectedCells(0).Value.ToString().

Но я не знаю, как это сделать, как ProductTable.Rows(i).Columns(0).Value не работает, поскольку Columns не является членом объекта Row.

What it looks like

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

У вас могут возникнуть проблемы при удалении строки из границы DataTable с использованием индекса «выбранной» строки сетки, если сетка «Сортирована или отфильтрована».Я держу пари, что неправильные строки будут удалены из DataTable при сортировке или фильтрации сетки.

Чтобы исправить это, я предлагаю использовать сетки DataBoundItem из выбранной строки.Это должно гарантировать, что правильный ряд удален из DataTable.Что-то вроде ниже ...

Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
  if (DataGridView1.SelectedRows.Count() > 0) Then
    Dim row As DataGridViewRow = DataGridView1.SelectedRows(0)
    If (Not row.IsNewRow) Then
      row.DataBoundItem.Delete
      ' You can also directly delete the row from the grids rows collection
      ' which will automatically map to the proper row in the table
      'DataGridView1.Rows.RemoveAt(row.Index)
    End If
  End If
End Sub
0 голосов
/ 06 февраля 2019

Если вы просто хотите удалить одну выбранную строку

DataGridView1.CurrentRow.Delete()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...