why doesn't datagridview refresh?

Subtle difference here to @Fake but calling Refresh() won't work as calling this on the dataGridView only

"Forces the control to invalidate its client area and immediately redraw itself and any child controls."

As this method relates to any control, not to the refresh of the data relating to an object. Refer here (DataGridView Methods) and scroll down to Refresh and you will see the link points to Control.Refresh Method

You want something like this;

BindingSource bs = new BindingSource(); 
bs.DataSource = ConnectandReadList(some_query);
dataGridView1.DataSource = bs;
bs.ResetBindings(false)

and then you can just call ResetBindings() on bs (Your BindingSource);

BindingSource bs = new BindingSource(); 
private refreshData()
{
    bs.ResetBindings(false)
}