If you have AllowUserToAddRows property enabled on your DataGridView then you might be accidently deleting the empty row at the bottom of the DataView which is a placeholder for the next user created row. Try disabling this option if not required, otherwise try using code like this.
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
if(!row.IsNewRow)
dataGridView1.Rows.Remove(row);
}
SqlConnection con = new SqlConnection(ConString);
open and close SQL connection and DataReader object properly.
if ((rdr != null))
{ rdr.Close(); }
if (con.State == ConnectionState.Open)
{ con.Close(); }
carefully look at the exception and your logic. and CommandText property initialized properly.