para actualizar un DataViewGrid cada 5 segundos lo que hago es desde un Timer llamo a la siguiente función:
void ActualizarDatos() { 
     //DT->Rows->Find  
     DT = gcnew DataTable(); 
     SDA->Fill(DT);
   dgDatos->DataSource = DT;
}
Notas: DT (es un DataTable), SDA (es un   SqlDataAdapter) y dgDatos ( es un DataViewGrid)
pero no se si hay una manera mejor, parece un poco chapuzas, sabeis alguna manera mejor de hacerlo.