如何刷新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);


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因