簡體   English   中英

dataGridView不會反映更新的數據集

[英]dataGridView won't reflect updated dataset

在主表單上,我有以下方法:

private void updateSet()
{
    dsManager.fillPeriodSet();

    dataGridView1.DataSource = null;

    dataGridView1.AutoGenerateColumns = true;
    dataGridView1.DataSource = dsManager.mainSet;

    dataGridView1.DataMember = "nice_table";
}

當表單初始化時,以及在使用附加的“句點”更新數據集之后,從構造函數中調用此方法。 第一次加載表單時,它工作正常,更改數據集的功能也能正常工作,我可以通過檢查器窗口確認新值已成功添加。

第二次調用時,即使數據集已正確更新,也沒有任何反應。 如果我關閉該窗體並重新運行,它將再次正確顯示,包括新添加的“句點”。

我知道在此論壇和其他論壇上還有很多其他類似的問題,我至少嘗試了其中的10個。 在這里似乎沒有對他人有用的東西。

過去有沒有人對此問題有任何經驗?

當應用程序處於活動狀態並且具有多種形式時,活動形式就是具有輸入焦點的形式。 不可見的表單不能是活動表單。 激活可見形式的最簡單方法是單擊它或使用適當的鍵盤組合。

在C#WindowsApplication中,您有一個名為Form_Activate的事件

您可以處理此事件,並在發生此事件時運行您的代碼。

private void Form1_Activated(object sender, System.EventArgs e)
    {
        //your code :)
    }

因此,經過大約一個星期左右的時間處理我的代碼的每種可能的變體之后,進行以下更改后,我終於可以使用所有功能:

dataGridView1.DataSource = itemSet1;
dataGridView1.DataMember = "items_formatted";

dataGridView1.DataSource = itemSet1.Tables["items_formatted"];
//dataGridView1.DataMember = "items_formatted";

顯然, DataMember屬性正在發生某些事情,導致DataGridView無法刷新。 即使我明確地清除了它( dataGridView1.DataMember = null; )並且在“本地”窗口中顯示為已清除,它仍然具有某種殘留效果,使得無法重新加載數據集。

非常令人沮喪,如果有人知道這是為什么,我很想知道。 否則,我希望這個問題/答案至少可以幫助處於相同位置的其他人。

更新:

作為其他參考,我原始問題中的代碼已更新:

dataGridView1.DataSource = dsManager.mainSet;

dataGridView1.DataMember = "nice_table";

至:

dataGridView1.DataSource = dsManager.mainSet.Tables["nice_table"];

現在效果也不錯。 我的任何表格都不需要其他的清除/更新/重組代碼。

暫無
暫無

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

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