2009-07-15 10 views
8

Si vous avez un DataGridView lié à un DataView (someDataTable.DefaultView).Diffusion de la mise à jour DataGridView lors de la modification du DataTable sous-jacent

..et un certain nombre de modifications sont effectuées sur les lignes du DataTable sous-jacent à partir du code.

Est-il possible de différer la mise à jour de DataGridView jusqu'à ce que vous ayez fini d'éditer les lignes? En l'état, DataGridView est mis à jour après chaque modification, ce qui, si vous n'avez pas besoin d'un retour instantané, est inefficace et un peu choquant si vous mettez à jour plusieurs lignes dans le DataTable l'une après l'autre.

Répondre

15

Afin de pouvoir suspendre temporairement la liaison de données, vous devez mettre un BindingSource entre votre DataGridView et votre DataView. En définissant la propriété RaiseListChangedEvents sur BindingSource sur false, les modifications de la source sous-jacente ne sont pas notifiées au DataGridView. Vous pouvez faire glisser & déposer un composant Bindingsource à partir de la boîte à outils dans la vue de conception. J'ai essayé de mettre en place les sources de données via le concepteur, mais il n'a pas fonctionné, alors je l'ai fait dans le code:

bindingSource1.DataSource = someDataTable.DefaultView; 
dataGridView1.DataSource = bindingSource1; 

Pour suspendre la liaison de données, vient de mettre la propriété RaiseListChangedEvents false:

bindingSource1.RaiseListChangedEvents = false; 

pour reprendre la liaison de données, situé juste à la RaiseListChangedEvents true et réinitialiser les liaisons pour que l'écran est mis à jour:

bindingSource1.RaiseListChangedEvents = true; 
bindingSource1.ResetBindings(false); 
+0

réponse Nice. Je vous remercie. – xyz

Questions connexes