从DataGridView中删除所选行

时间:2009-04-23 14:26:38

标签: .net winforms

我有一个DataGridView,它绑定到一组对象。

我想在表单上创建一个删除按钮,以便用户可以删除所选行。

但是如果选择了新行(网格中的特殊最后一行),则会出现问题。 如果我选择新行,然后尝试单击“删除”按钮,则网格会失去焦点并更改所选行!它使最后一行被选中(新行之前的那一行)。所以在Delete按钮处理程序中,已经选择了另一行,而不是新行!

除了隐藏那个特殊的新行(AllowUserToAddRows = false)并为其创建自己的“添加”按钮和代码之外,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

当选择了无效行(即特殊新行)时,您可以禁用“删除”按钮

答案 1 :(得分:0)

Private Sub btnDelete_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)处理btnDelete.Click

    Dim gr As New DataGridViewRow
    For Each gr In DataGridView1.SelectedRows
        ds.Tables(0).Rows(gr.Index).Delete()
    Next
    ds.AcceptChanges() ' Accept Changes
    DataGridView1.Rows.Clear()
    lbltest.Text = ""
    calldata(ds) ' this function is as follow
    'Public Function calldata(ByRef DS As DataSet)
    '    Dim i As Integer = 0
    '    Dim dr As DataRow
    '    Dim dc As DataColumn
    '    For Each dr In DS.Tables(0).Rows  'dt.Rows
    '        Dim j As Integer = 0
    '        DataGridView1.Rows.Add()
    '        For Each dc In DS.Tables(0).Columns 'dt.Columns
    '            DataGridView1.Rows(i).Cells(j).Value = dr(dc).ToString()
    '            lbltest.Text = lbltest.Text & " : " & dr(dc).ToString()
    '            j = j + 1
    '        Next
    '        i = i + 1
    '    Next

    'End Function
    ' the above code only update your dataset not actual data
End Sub