如何刷新WinForms DataGridView上的DataSource?

datagridview entity-framework refresh winforms

我从EntityFramework模型填充GridView.DataSource:

gwTimeLog.DataSource = _entities.TimeLogs;

当一个新行添加到_entities时,我尝试更新网格(尝试使用与上面相同的语句,将其设置为null,然后返回_entities.TimeLogs等...),但网格根本不会更新。即使_entities.TimeLogs确实包含新行。

我错过了什么?

一般承认的答案

答案是让gridview连接到BindingList而不是List。


热门答案

老答案:您是否尝试过调用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);


许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因