2010-01-06 42 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