Come stai usando UpdatePanels si sta andando ad avere bisogno di agganciare in ASP.NET AJAX PageRequestManager
Avrai bisogno di aggiungere un metodo per le endRequest ganci di eventi che sono:
Sollevato dopo il completamento di un postback asincrono e il controllo è stato restituito al browser.
questo modo ci sono qualcosa come:
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(pageLoaded);
function pageLoaded(sender, args) {
window.scrollTo(0,0);
}
</script>
che costringerà il browser per scorrere di nuovo alla parte superiore della pagina una volta una richiesta di aggiornamento è stata completata.
Ci sono altri eventi è possibile collegare in, invece, naturalmente:
beginRequest // Raised before the request is sent
initializeRequest // Raised as the request is initialised (good for cancelling)
pageLoaded // Raised once the request has returned, and content is loaded
pageLoading // Raised once the request has returned, and before content is loaded
La bellezza di asincroni post-spalle è che la pagina sarà mantenere l'altezza di scorrimento senza dover impostare MaintainScrollPosition, in quanto non v'è alcuna "full page reload" sta accadendo, in questo caso in realtà vuoi che quell'effetto avvenga, quindi dovrai crearlo manualmente.
Modifica per rispondere alla domanda aggiornato
Ok, quindi se avete bisogno di ripristinare solo la postion su alcuni pressione dei pulsanti avrete bisogno di fare qualcosa di simile:
Inizio agganciando nella BeginRequest invece/e:
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Questo perché nel parametro args è possibile accedere a:
012.
args.get_postBackElement().id
che vi dirà l'id del pulsante che ha avviato l'intero evento - si può allora o controllare il valore qui, e spostare la pagina, o conservare in una variabile, ed eseguire una query nella richiesta end - essere a conoscenza delle condizioni di gara, ecc. dove l'utente fa clic su un altro pulsante prima del completamento dell'aggiornamento originale.
Questo dovrebbe farti andare con tutta la fortuna - ci sono un bel paio di esempi in tutto questo su Working with PageRequestManager Events
Voglio solo tornare all'inizio della pagina con questo evento specifico di ASP.NET GridView. Ho un sacco di altri pulsanti sulla stessa pagina per cui voglio mantenere la posizione di scorrimento. –