Comment actualiser le DataSource sur un WinForms DataGridView?

datagridview entity-framework refresh winforms

Question

Je remplis le GridView.DataSource à partir d'un modèle EntityFramework:

gwTimeLog.DataSource = _entities.TimeLogs;

Quand une nouvelle ligne est ajoutée aux _entities, j'essaie de mettre à jour la grille (j'essaie d'utiliser la même instruction que ci-dessus, en lui donnant la valeur null, puis en revenant à _entities.TimeLogs, etc.), mais la grille ne sera tout simplement pas mise à jour. . Même si _entities.TimeLogs contient les nouvelles lignes.

Qu'est-ce que je rate?

Réponse acceptée

La solution consiste à connecter la grille à la BindingList plutôt qu'à la liste.


Réponse populaire

ANCIENNE RÉPONSE: Avez-vous essayé d'appeler GridView.DataBind ()?

Woops, je pensais que c'était un WebForms DataGrid.

Si vous êtes sur WinForms, vous voudrez peut-être consulter la classe BindingSource. La liaison à cette classe au lieu d’être directement sur votre liste fournira une notification de mise à jour, etc.

Le code suivant fonctionne pour moi:

        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

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow