private void Page_Load(object sender, System.EventArgs e) { if (!Page.IsPostBack) { // ... } RegisterHiddenField("__SCROLLLOC", "0"); StringBuilder sb = new StringBuilder(); sb.Append("<script language='javascript'>"); sb.Append("function SaveScrollLocation () {"); sb.Append(" document.forms[0].__SCROLLLOC.value = document.body.scrollTop;"); sb.Append("}"); sb.Append("document.body.onscroll=SaveScrollLocation;"); sb.Append("</script>"); if (!IsStartupScriptRegistered("saveScroll")) { RegisterStartupScript("saveScroll", sb.ToString()); } if (Page.IsPostBack) { StringBuilder _sb = new StringBuilder(); _sb.Append("<script language='javascript'>"); _sb.Append("function SetScrollLocation () {"); _sb.AppendFormat(" document.body.scrollTop = {0};",Request["__SCROLLLOC"]); _sb.Append("}"); _sb.Append("document.body.onload=SetScrollLocation;"); _sb.Append("</script>"); if (!IsStartupScriptRegistered("setScroll")) { RegisterStartupScript("setScroll", _sb.ToString()); } } }Or in another way (w/o using StringBuilder):
RegisterHiddenField("__SCROLLLOC", "0"); string saveScroll = @"<script language='javascript'> function SaveScrollLocation () { document.forms[0].__SCROLLLOC.value = document.body.scrollTop; } document.body.onscroll=SaveScrollLocation; </script>"; if (!IsStartupScriptRegistered("saveScroll")) { RegisterStartupScript("saveScroll", saveScroll); } if (Page.IsPostBack) { string setScroll = @"<script language='javascript'> function SetScrollLocation () { document.body.scrollTop = " + Request["__SCROLLLOC"].ToString() + @";} document.body.onload=SetScrollLocation; </script>"; if (!IsStartupScriptRegistered("setScroll")) { RegisterStartupScript("setScroll", setScroll); } }Cetin