70 votes

simple question d'actualisation DataGridView

Quel est le meilleur moyen d'actualiser un DataGridView lorsque vous mettez à jour la source de données de base?

Je mets à jour fréquemment la source de données et je voulais afficher le résultat à l'utilisateur au fur et à mesure.

J'ai quelque chose comme cela fait (et cela fonctionne), mais la suppression de la DataGridView.DataSource ne semble pas être la bonne façon.

 List<ItemState> itemStates = new List<ItemState>();
dataGridView1.DataSource = itemStates;

for (int i = 0; i < 10; i++) { 
    itemStates.Add(new ItemState { Id = i.ToString() });
    dataGridView1.DataSource = null;
    dataGridView1.DataSource = itemStates;
    System.Threading.Thread.Sleep(500);
}
 

57voto

GWLlosa Points 10701

Je suis tombé dessus moi-même. Ma recommandation: Si vous êtes propriétaire de la source de données, n'utilisez pas de liste. Utilisez une BindingList. La BindingList contient des événements qui se déclenchent lorsque des éléments sont ajoutés ou modifiés, et le datagridview se met automatiquement à jour lorsque ces événements sont déclenchés.

50voto

Alan Points 3381

Eh bien, ça ne va pas beaucoup mieux que ça. Officiellement, vous devriez utiliser

 dataGridView1.DataSource = typeof(List); 
dataGridView1.DataSource = itemStates;
 

C'est toujours un type de solution "effacer / réinitialiser la source", mais je n'ai encore rien trouvé qui puisse rafraîchir de manière fiable la source de données DGV.

-5voto

Georg Points 58

Essayez ce code

 List itemStates = new List();

for (int i = 0; i < 10; i++)
{ 
    itemStates.Add(new ItemState { Id = i.ToString() });
    dataGridView1.DataSource = itemStates;
    dataGridView1.DataBind();
    System.Threading.Thread.Sleep(500);
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X