Wie aktualisiere ich die DataSource auf einem WinForms DataGridView?

datagridview entity-framework refresh winforms

Frage

Ich fülle die GridView.DataSource aus einem EntityFramework-Modell aus:

gwTimeLog.DataSource = _entities.TimeLogs;

Wenn eine neue Zeile zu den _entities hinzugefügt wird, versuche ich, das Raster zu aktualisieren (versucht, dieselbe Anweisung wie oben zu verwenden, es auf null zu setzen, dann wieder auf _entities.TimeLogs usw.), aber das Raster wird einfach nicht aktualisiert . Auch wenn _entities.TimeLogs tatsächlich die neuen Zeilen enthält.

Was vermisse ich?

Akzeptierte Antwort

Die Antwort ist, dass der Gridview mit der BindingList anstatt mit der Liste verbunden ist.


Beliebte Antwort

ALTE ANTWORT: Haben Sie versucht, GridView.DataBind () aufzurufen?

Woops, ich dachte, das wäre ein WebForms DataGrid.

Wenn Sie WinForms verwenden, möchten Sie möglicherweise die BindingSource-Klasse untersuchen. Wenn Sie an diese Klasse binden und nicht direkt in Ihre Liste einbinden, erhalten Sie eine Aktualisierungsbenachrichtigung usw.

Der folgende Code funktioniert für mich:

        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);


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum