2010-01-06 5 views
5

Je renseignez la GridView.DataSource d'un EntityFramework Modèle:Comment actualiser le DataSource sur un WinGroup DataGridView?

gwTimeLog.DataSource = _entities.TimeLogs; 

Lorsqu'une nouvelle ligne est ajoutée aux _entities, je tente de mettre à jour la grille (essayé d'utiliser la même déclaration que ci-dessus, le mettre null, retour à _entities.TimeLogs, etc ...), mais la grille ne sera tout simplement pas mise à jour. Même si _entities.TimeLogs contient réellement les nouvelles lignes.

Qu'est-ce qui me manque?

Répondre

5

La réponse est d'avoir le gridview connecté au BindingList plutôt que la liste .

10

ANCIENNE RÉPONSE: Avez-vous essayé d'appeler GridView.DataBind()? Woops, je pensais que c'était un DataGrid WebForms.

Si vous êtes sur WinForms, vous pourriez vouloir regarder dans la classe BindingSource. Reliure à cette classe au lieu de directement à 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); 
+0

Winforms, pas ASP.NET – AngryHacker

+0

Mon erreur. Modifié. – hackerhasid

+0

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

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

Bienvenue sur stackoverflow! Il est toujours préférable de fournir une brève description d'un exemple de code pour améliorer la précision de la publication :) –

0

Cela fonctionne pour moi:

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

Bien que ce code puisse répondre à la question, fournir un contexte supplémentaire expliquant pourquoi et/ou comment ce code répond à la question améliore sa valeur à long terme. Par exemple, existe-t-il une raison pour laquelle la définition de la source de données à null, puis à quelque chose d'autre fonctionne? – ryanyuyu

+0

Ce code entraîne la mise à jour de l'ensemble du contenu de la grille de données, tout en réajustant la source de données à la même valeur - n'est pas – Netstep

Questions connexes