ASP.NET 1.0, 1.1
L'uso dell'attributo SmartNavigation è efficiente, salvo alcune eccezioni, quando utilizzato a livello di pagina. Tuttavia, vista l'incompatibilità con Windows Server 2003 (una delle eccezioni) è, a parer mio, sconsigliabile.
D'altro canto, creare un ancora HTML via codice è piuttosto semplice. Devi generare nell'HTML un tag di questo tipo:
<a id="nome_ancora"></a>
Se stai utilizzando un controllo DataGrid, inseriscilo all'interno della prima colonna della riga sulla quale ti vuoi posizionare al caricamento della pagina. Infine, per caricare la pagina, esegui:
Response.Redirect Request.Url.AbsoluteUri + "#nome_ancora"
Tieni presente che la specificazione dell'ancora deve immediatamente seguire il nome della pagina. Ovvero deve precedere la QueryString. Qualche esempio:
http://www.dominio.it/pagina.aspx#nome_ancora
http://www.dominio.it/pagina.aspx#nome_ancora?param1=x¶m2=y
Dovrebbe essere sufficiente.
ASP.NET 2.0
Se lavori con ASP.NET 2.0, invece, sarà tutto estremamente più semplice. Infatti, ti basterà impostare nelle direttive di pagina l'attributo MaintainScrollPositionOnPostBack su True:
<%@ Page Language="VB" MaintainScrollPositionOnPostBack="true" %>