如何刷新WinForms DataGridView上的DataSource?

Ang*_*ker 6 entity-framework datagridview refresh winforms

我从EntityFramework模型填充GridView.DataSource:

gwTimeLog.DataSource = _entities.TimeLogs;
Run Code Online (Sandbox Code Playgroud)

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

我错过了什么?

hac*_*sid 12

老答案:您是否尝试过调用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);
Run Code Online (Sandbox Code Playgroud)


Ang*_*ker 7

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