删除DataTable行,选定DataGridView行的源,单击按钮

时间:2019-02-06 14:21:26

标签: vb.net datagridview datatable

我有一个名为ProductTable的DataTable,它具有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

但是我遗漏了一些明显的东西:允许我在DataTable中选择与ProductGrid.SelectedCells(0).Value.ToString()相对应的行的条件。

但是我不知道该怎么做,因为ProductTable.Rows(i).Columns(0).Value不是Columns对象的成员,所以Row不起作用。

What it looks like

2 个答案:

答案 0 :(得分:2)

如果网格为“已排序或已过滤”,则使用网格“选定的”行索引从绑定的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

答案 1 :(得分:1)

如果您只想删除单个选定行

DataGridView1.CurrentRow.Delete()