2010-01-06 9 views
5

ich bevölkern die GridView.DataSource von einem EntityFramework Modell:Wie aktualisiert man die DataSource in einem WinForms DataGridView?

gwTimeLog.DataSource = _entities.TimeLogs; 

Wenn eine neue Zeile in den _entities hinzugefügt wird, versuche ich, um das Raster zu aktualisieren (versucht, wie oben die gleiche Anweisung, es null einstellen, dann zurück zu _entities.TimeLogs, etc ...), aber das Grid wird einfach nicht aktualisiert. Obwohl _entities.TimeLogs tatsächlich die neuen Zeilen enthält.

Was fehlt mir?

Antwort

5

Die Antwort ist der gridview mit dem Binding anstatt der Liste haben .

10

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

Woops, ich dachte, das war ein WebForms DataGrid.

Wenn Sie mit WinForms arbeiten, sollten Sie sich die BindingSource-Klasse ansehen. Die Bindung an diese Klasse statt direkt auf Ihre Liste Update-Benachrichtigung zur Verfügung stellt 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); 
+0

WinForms, ASP.NET nicht – AngryHacker

+0

Mein Fehler. Überarbeitet. – hackerhasid

+0

BindingSource @ MSDN: http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.aspx – hackerhasid

-1
grid.EndEdit(); 
BindingSource.EndEdit(); 
_entities = new dbEntities(); 
firmeBindingSource.DataSource=_entities.TimeLogs; 
+4

Willkommen bei stackoverflow! Es ist immer besser, eine kurze Beschreibung für einen Beispielcode anzugeben, um die Postgenauigkeit zu verbessern. –

0

Dies funktioniert für mich:

dataGridView.DataSource = null; 
dataGridView.DataSource = listOfSomething; 
+0

Während dieser Code die Frage beantworten kann, verbessert ein zusätzlicher Kontext, warum und/oder wie dieser Code die Frage beantwortet, seinen langfristigen Wert. Gibt es beispielsweise einen Grund, warum die DataSource auf null und dann auf etwas anderes eingestellt wird? – ryanyuyu

+0

Dieser Code bewirkt, dass der Inhalt des gesamten Datenrasters aktualisiert wird, während die Datenquelle nur auf den gleichen Wert zurückgesetzt wird - nicht – Netstep

Verwandte Themen