[英]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.