Dovendo fare quello che vuoi tu io userei proprio quella tecnica, quella che tu vuoi evitare.Che sbatti: volevo evitare di passare informazioni in querystring ma è decisamente più facile se lavoro su pag1.aspx, prendo il SelectedDataKey del gridview nell'evento SelectedIndexChanged e lo giro a pag2.aspx come parametro in querystring per mostrare il detailview relativo alla riga selezionata...
O non crederai che complicando il codice per non usare la querystring, migliori il lavoro?
ps. il crosspostback te lo sconsiglio davvero.