Personally I would setup my data in a BindingSource and make that the DataGridView source which then can be sorted using the BindingSource sort method. To keep the current row current you can work that out in the BindingSource position changed event.

Another possibility is to use code as shown below
Code:
DataGridView1.Sort(DataGridView1.Columns(0), System.ComponentModel.ListSortDirection.Ascending)