2014-01-16 207 views
1

我試圖以編程方式刪除datagridview的最後一行,但我無法。以下是我試過到目前爲止:刪除datagridview中的最後一行

DataGridView1.Rows.RemoveAt(DataGridView1.Rows.Count - 1) 

我也試圖選擇最後一排,然後將其刪除,但沒有奏效要麼

Me.DataGridView1.Rows(Me.DataGridView1.RowCount - 1).Selected = True 

DataGridView1.Rows.Remove( DataGridView1.CurrentRow)

Me.DataGridView1.Rows(Me.DataGridView1.RowCount - 1).Selected = True 

對於每一行作爲一個DataGridViewRow在DataGridView1.SelectedRows DataGridView1.Rows.Remove(行) 下一頁

我不斷收到一個錯誤,指出「未提交的新行不能被刪除。」 感謝

+2

你試過從底層數據源刪除記錄(例如BindingSource的),並刷新網格? – majjam

回答

0

機會是你需要調用在數據源的行RejectChanges。

對於新行,這意味着刪除。也看到這一點:

+0

謝謝。但是,datagridview實際上並未綁定到dataSourse。用戶在datagridview中輸入數據,然後按下保存按鈕並將數據保存到多個.txt文件。當用戶添加信息說,第5行,然後出現一個新的第6行。我想刪除最後一行6,因爲當用戶按下保存按鈕時,它會使用null/empty值搞亂程序。 – user3080392

+0

@ user3080392:DataGridView沒有被綁定的原因嗎?我的意思是,您不必將其綁定到數據庫,即可以手動創建DataTable。這樣更容易管理,你不應該再遇到你所描述的問題。此外,這是關於此問題範圍的重要信息,因此請更新問題以將其納入其中。 – Neolisk

0

而不是刪除最後一排,我最終只是繞過它。我想出瞭如何選擇除最後一行外的所有行,然後我實現了只涉及選定行的代碼。

Me.DataGridView1.ClearSelection() 

Me.DataGridView1.SelectAll()
Me.DataGridView1.Rows(Me.DataGridView1.RowCount - 1).Selected =假

0

除了刪除最後一行提交您可以防止用戶選擇它。 通過將以下代碼插入到datagridview的cellclick事件中。

Dim i As Integer = DataGridView1.CurrentRow.Index 

    If DataGridView1.Item(0, i).Value.ToString() = "" Then 
     MsgBox("Sorry...Blank Row") 
     DataGridView1.ClearSelection() 
     DataGridView1.Rows(i - 1).Selected = True 
     i = i - 1 
    End If 

您的其他代碼在這裏。

2

嘗試這種行爲性質
AllowUserToAddRows集其設置你的datagridview到False
然後使用此代碼

DataGridView1.Rows.RemoveAt(DataGridView1.Rows.Count - 1)