我有一个名为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
不起作用。
答案 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()