2017-07-07 139 views
-1

试图删除选定的gridview行。我读了几个网站并使用了代码,但是出现错误。我想是因为大多数我使用的DataGridView他们看到的代码,这个代码是删除按钮事件中删除选定的gridview行

For i = 0 To myGridView.Rows.Count - 1 Step i + 1 
     Dim delrow As GridViewRow = myGridView.Rows(i) 
     If delrow.Selected = True Then 
      myGridView.Rows.RemoveAt(i) 
     End If 
    Next 

两个错误,我越来越有:

1)RemoveAt移除不GridViewRowCollection成员 2)选定不是GridViewRow的成员

您的帮助将被高度赞赏!

+0

删除源数据项并重新绑定Gridview。 – VDWWD

+0

VDWWD,你如何选择数据源.. myGridView.DataSource? – Sam

+0

什么是你绑定到GridView。我们假设它是一个数据库表。如果你想从gridview中删除一行,你必须确保它从数据库中删除或不再显示在选择中,然后重新绑定girdview。 – VDWWD

回答

0

我通常在GridView的把一个的ImageButton(用垃圾箱)上的每一行与模板字段删除行,然后在RowDataBound事件我联想“DeleteRow”事件的rowIndex到的CommandName和CommandArgument

Protected Sub myGridView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     Dim ib As ImageButton = e.Row.FindControl("ibDeleteRow") 
     ib.CommandName = "DeleteRow" 
     ib.CommandArgument = e.Row.RowIndex 
    End if 
end sub 

Private Sub myGridView_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand 
    If e.CommandName = "DeleteRow" Then 
     Dim rowToDeleteIndex as integer = e.CommandArgument 
     myGridView.DeleteRow(rowToDeleteIndex) 
    end if 
end sub 

Private Sub myGridView_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles GridView1.RowDeleting 

End Sub 
+0

嘿,我试过你的解决方案,但我得到这个错误:索引超出范围。必须是非负数且小于集合的大小。 – Sam

+0

看起来你没有任何选定的行,所以myGridView.SelectedIndex = -1。你在RowCommand事件中使用这段代码吗? –

+0

不,我创建了我自己的按钮单击方法,我创建的按钮叫做它删除然后生成它的方法。让我生成RowCommand方法并尝试它 – Sam