簡體   English   中英

從DataGridView刪除行(物理地)

[英]Deleting Rows (physically) from DataGridView

問題是,即使您從視圖中刪除了行,當您單擊Delete時,如果您選中Rows.Count ,仍然會保留。

在具有“ Delete(DataRow) ”的DataTables上也發生了同樣的情況,這是我使用Remove / RemoveAt跳過的。

因此,在我從DataGridView刪除行之后,如果我將DataSource用作DataTable並嘗試導出(在本例中為csv),則會拋出一條消息,提示它無法獲取已刪除行的信息(解釋-抱歉,調試器將本機拋出語言)。

我可以想到一些棘手的方法來使用DataGridViewRowCollectionDataGridViewSelectedRowCollectionDataTables ,但是我確實需要更簡單易用的東西。

好的,解決方案在DataRowState上。 為了擺脫所有手動刪除的行,您必須執行以下操作:

DataTable t = (DataTable)dataGridView1.DataSource;

for (int i = t.Rows.Count - 1; i >= 0; i--)
{
    if (t.Rows[i].RowState == DataRowState.Deleted)
           t.Rows.RemoveAt(i);
}

我在這里玩游戲有點晚,但這非常容易。

首先,使用WithEvents關鍵字創建DataTable:

Dim WithEvents theDataTable As New DataTable

或者,您可以使用AddHandler方法:

AddHandler theDataTable.RowDeleted, AddressOf theDataTable_RowDeleted

然后處理RowDeleted事件:

Private Sub theDataTable_RowDeleted(sender As Object, e As DataRowChangeEventArgs) Handles theDataTable.RowDeleted
        theDataTable.Rows.Remove(e.Row)
End Sub

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM