tieni la colonna impostata a visibile false
poi prima della chiamata al metodo DataBind della gridview imposti il DataKeyNames, sempre della gridview, alla tua colonna ID
es:
grid.DataKeyNames = new string[] { "ID"}; //ID deve essere un nome di colonna presente nel db

così ogni riga avrò una sua chiave e tu potrai recuperarla all'interno dell'evento SelectedIndexChanging

codice:
(all'interno dell'evento SelectedIndexChanging)
grid.SelectedIndex = e.NewSelectedIndex;
int id = Convert.ToInt32(grid.SelectedDataKey["ID"]);