Why are you using a loop at all?
The
MSDN example for DataTable.Load[
^] doesn't, and I can see no reason why you would want to...
SqlCommand cmd=new SqlCommand("select * from register",CON);
SqlDataReader rdr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(rdr);
dataGridView1.DataSource=dt;