2010-01-06 57 views
5

我填充GridView.DataSource從的EntityFramework型號:如何刷新WinForms DataGridView上的數據源?

gwTimeLog.DataSource = _entities.TimeLogs; 

當一個新的行添加到_entities,我嘗試更新的網格(使用與上述相同的語句嘗試,將其設置爲空,則回到_entities.TimeLogs等等),但網格根本不會更新。即使_entities.TimeLogs實際上包含新行。

我錯過了什麼?

回答

5

答案是已經在GridView連接的BindingList,而不是名單。

10

OLD ANSWER:你嘗試過調用GridView.DataBind()嗎?

Woops,我以爲這是一個WebForms DataGrid。

如果您使用WinForms,您可能需要查看BindingSource類。綁定到類,而不是直接到你的列表會提供更新通知,等

下面的代碼對我的作品:

 List<Person> names = new List<Person>(); 
     names.Add(new Person(){ 
      FirstName = "Steve", 
      LastName = "Jobs" 
     }); 
     names.Add(new Person() 
     { 
      FirstName = "Bill", 
      LastName = "Gates" 
     }); 

     BindingSource source = new BindingSource(); 
     source.DataSource = names; 
     dataGridView1.DataSource = source; 

     names.Add(new Person() 
     { 
      FirstName = "Steve", 
      LastName = "Balmer" 
     }); 

     source.ResetBindings(false); 
+0

的WinForms,ASP.NET不是我 – AngryHacker 2010-01-06 18:50:06

+0

錯誤。修訂。 – hackerhasid 2010-01-06 18:53:08

+0

BindingSource @ MSDN:http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.aspx – hackerhasid 2010-01-06 18:53:57

-1
grid.EndEdit(); 
BindingSource.EndEdit(); 
_entities = new dbEntities(); 
firmeBindingSource.DataSource=_entities.TimeLogs; 
+4

歡迎來到計算器!提供示例代碼的簡短描述以提高發布準確性總是更好:) – 2012-10-28 00:47:46

0

這個工作對我來說:

dataGridView.DataSource = null; 
dataGridView.DataSource = listOfSomething; 
+0

儘管此代碼可能回答此問題,但爲何和/或代碼如何回答問題提供了其他上下文,這可以提高其長期價值。例如,是否有任何理由將DataSource設置爲null,然後再設置其他內容? – ryanyuyu 2015-09-29 19:39:11

+0

此代碼會導致更新整個數據網格內容,而只是將數據源再次設置爲相同的值 - 不是 – Netstep 2015-10-01 07:58:03