Ciao Paolo, scusa se ti rispondo con ritardo.
Purtroppo l'unico metodo che conosco per modificare a runtime i dati presenti in un gridview è proprio come hai detto tu, e cioè intercettare l'evento RowDataBound e lavorare sulla proprietà text delle celle.
Prendendo spunto da quello che hai scritto supponiamo di lavorare sulla prima colonna del gridview (come abbiamo fatto prima) e che i valori siano una serie di codici settore (1 - 2 - 3 ecc.)
Questo codice trasforma i valori contenuti nella cella (che normalmente arrivano come testo) in hyperlink che puntano ad un'ipotetica pagina "dettagli.aspx" a cui viene passata come querystring il codice settore:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex >= 0)
e.Row.Cells[0].Text = string.Format("<a href=\"dettagli.aspx?id={0}\">{0}</a>", e.Row.Cells[0].Text);
}
Il valore che vedi a video è sempre il codice settore poichè è anche impostato come etichetta per il collegamento.
Riprendendo l'ottimo spunto di BrightSoul potresti rendere tutte le colonne "cliccabili" inserendo il tutto in un ciclo for
if (e.Row.RowIndex >= 0)
{
for (int i = 0; i < e.Row.Cells.Count; i++)
{
e.Row.Cells[i].Text = string.Format("<a href=\"dettagli.aspx?id={0}\">{0}</a>", e.Row.Cells[i].Text);
}
}
Ovviamente dovresti fare in modo che in base alla colonna il link punti alla pagina che ti interessa.
Fammi sapere se può esserti utile
A presto ;)