2017-07-07 135 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