簡體   English   中英

C# - 如何在刪除行后刷新 DataGridView

[英]C# - how do I refresh DataGridView after removing rows

在我的代碼中,我需要在重復間隔后從 DataGridView 中刪除行,因此當計時器到期時我調用以下 function:

private void removeRows(DataGridView dgv) {

    foreach (DataGridViewRow row in dgv.Rows)
    {
        // if some condition holds
        dgv.Remove(row);                
    }
    dgv.Refresh();

}

我知道這些行已從 DataGridView 中成功刪除,但無論出於何種原因它們仍保留在顯示中。 關於我可能做錯了什么的任何提示?

你不需要重新綁定數據網格嗎?

dgrv.Datasource = [whatever data source];
dgrv.DataBind();

有時刷新數據gridview是不夠的,它的包含父項也應該刷新。

嘗試這個:

dgv.Refresh(); // Make sure this comes first
dgv.Parent.Refresh(); // Make sure this comes second

您還可以編輯源並將新數據源附加到控件。

如果已將datagrid綁定到Observable Collection(如果不是,則應該),那么您將需要實現INotifyCollectionChanged接口,以便向偵聽器通知動態更改,例如何時添加和刪除項目或刷新整個列表。

HTH

如果我理解正確,您希望從DGV中刪除用戶選擇的行。

  1. 使用DGV的DataGridViewRowCollection而不是DataTable的DataRowCollection。 DataGridViewRow具有Selected屬性,該屬性指示是否選擇了行。

  2. 一旦確定要刪除一行,就可以使用DataGridViewRowCollection的Remove方法從網格中刪除該項,例如YerDataGridView.Rows.Remove(row)

  3. 請注意,此時,雖然該項目已從DGV中刪除,但它仍未從Access DB中刪除。 您需要在DataSet / DataTable上調用TableAdapter Update方法以提交對數據庫的刪除,例如YerTableAdapter.Update(YerDataSet)

我通常會在刪除所有要從DGV中刪除的項目之后調用Update一次提交更改。

如果它是一個數據綁定網格,您應該使用綁定源本身而不是網格。

這段代碼可能很有用:

dataGridView.DataSource = null;
dataGridView.Update();
dataGridView.Refresh();
dataGridView.DataSource = SomeDataSource;

希望這可以幫助。

請嘗試從綁定源中刪除實際項目。

我有同樣的問題,我已經找到了根本原因。 您所要做的就是在重新加載之前初始化數據庫上下文 object 並查看魔術。

暫無
暫無

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

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