Best way to refresh DataGridView when you update the base data source


Question

What is the best way to refresh a DataGridView when you update the base data source?

I'm updating the datasource frequently and wanted to display the outcome to the user as it happens.

I've got something like this made (and it works), but null'ing out the DataGridView.DataSource doesn't seem like the right way.

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);
}
1
53
7/27/2015 5:44:56 PM

Accepted Answer

Well, it doesn't get much better than that. Officially, you should use

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

It's still a "clear/reset source" kind of solution, but I have yet to find anything else that would reliably refresh the DGV data source.

47
10/31/2008 3:40:20 PM

I ran into this myself. My recommendation: If you have ownership of the datasource, don't use a List. Use a BindingList. The BindingList has events that fire when items are added or changed, and the DataGridView will automatically update itself when these events are fired.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon