grazie mille ragazzi. Non so perchè ma ho il rifiuto dei templatefield. Forse perchè sto mettendo troppa carne al fuoco (niubbissimo con c#) e mi sono autoconvinto che i TF siano difficiliiiiiiiiiissimi.
Cmq, ho provato a implementare la soluzione di djciko con qualche modifica, e funziona. Alla fine infatti ho optato per un imagebutton.
codice:
ButtonField Btn_DettaglioLink = new ButtonField();
Btn_DettaglioLink.ButtonType = ButtonType.Image;
Btn_DettaglioLink.HeaderText = "dettaglio";
Btn_DettaglioLink.DataTextField = "KMovimenti";
Btn_DettaglioLink.ImageUrl = "~/Resources/Images/dettaglio.png";
Btn_DettaglioLink.CommandName = "cmdVisualizzaDettaglio";
ho creato quindi il rowcommand:
codice:
Gv_ToDoList.RowCommand += new GridViewCommandEventHandler(Gv_ToDoList_RowCommand);
e l'ho implementato:
codice:
protected void Gv_ToDoList_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "cmdVisualizzaDettaglio")
{
Response.Redirect("ToDoList.aspx?id=" + e.CommandArgument);
Mpe_RicercaMovimenti.Show();
}
}
alla fine infatti mi è stato sufficiente passare l'id all'url e associare lo Show().
Certo, levando tutte quelle righe ovviamente adesso ho il terrore che sia troppo semplice il mio codice, e che manchi qualcosa di essenziale!!! 
C'è anche un altro problema: se faccio il redirect ovviamente mi refrescia la pagina. Questo vuol dire che il mio modalpanel non arriva ad aprirsi. Pensavo di optare per un hiddenfield, da valorizzare con l'id, invece del redirect. Che ne pensate?