Scott on Writing

Musings on technical writing...

Maintain Scroll Position on Postback in ASP.NET 2.0

When working with a lengthy web page that spans many vertical “pages,” scrolling down and then doing something that causes a postback results with the posted back page sitting back up at the top rather than auto-scrolling down to the location where the postback was triggered. With ASP.NET 1.x, this problem can be easily overcome with a bit of JavaScript and server-side code. See Maintaining Scroll Position on Postback for more information.

ASP.NET 2.0 makes maintaining scroll position on postback much easier, although it's not a well-document or oft-discussed feature. When I show this little tip at User Group talks, to clients, or to my class, I'd say more than 90% of the people didn't know about this, are impressed, and wonder aloud, “Why isn't this common knowledge?”

Anyway, to have a single page remember scroll position on postback, simply set the MaintainScrollPositionOnPostback attribute in the @Page directive to True. That's it! The page will then automagically inject the needed JavaScript and server-side logic to make this feature a reality.

<%@ Page Language="..." MaintainScrollPositionOnPostback="true" ... %>

Alternatively, you can enable this feature for all pages in the site by setting it in the <pages> element in Web.config.

<pages maintainScrollPositionOnPostBack="true" />

See my article Client-Side Enhancements in ASP.NET 2.0 for more information on this feature, as well as additional client-side features added to ASP.NET 2.0!

posted on Thursday, December 14, 2006 9:33 AM

Feedback

# re: Maintain Scroll Position on Postback in ASP.NET 2.0 12/14/2006 11:08 AM Michael Shorten

Good stuff! I had futzed about with that, but it doesn't work when you are writing a control that you need to remember the scroll position for, say a Tree View or some other composite custom object. I wrote my own custom control that creates a scrollable div that remembers the scroll position - injects its own javascript to manage it.
michael-dot-shorten-at-mb-dash-limited-dot-com

# re: Maintain Scroll Position on Postback in ASP.NET 2.0 12/14/2006 11:15 AM Brian Hampson

Michael, this is exactly the problem we've run into as well.

It would be nice if scrollable controls had a "MaintainScrollPositionOnPostBack" as well

# re: Maintain Scroll Position on Postback in ASP.NET 2.0 12/15/2006 2:27 AM Vikram

Yes the same problem with me. When u are working with usercontrol(Which I am most of the time) the function does not work

# re: Maintain Scroll Position on Postback in ASP.NET 2.0 12/20/2006 2:05 PM Mark

I was looking for code to do this today then found this, thanks!

# re: Maintain Scroll Position on Postback in ASP.NET 2.0 5/13/2007 7:27 PM Luis

Thanks for this, you save my day.

Title:  
Name:  
Url:
Protected by Clearscreen.SharpHIPEnter the code you see:
Comments   

Add To Your Reader

My Links

Archives

Post Categories

 

I am a Microsoft MVP for ASP.NET.
I am an ASPInsider.
<May 2008>
SMTWTFS
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

Comment Stats

DayTotal% of Total
Sunday 1866.8%
Monday 37913.9%
Tuesday 45316.7%
Wednesday 50418.5%
Thursday 53519.7%
Friday 49418.2%
Saturday 1666.1%
Total 2717100.0%

Hour1Total% of Total
12:00 AM 652.4%
1:00 AM 682.5%
2:00 AM 622.3%
3:00 AM 742.7%
4:00 AM 572.1%
5:00 AM 1033.8%
6:00 AM 1084.0%
7:00 AM 1585.8%
8:00 AM 1716.3%
9:00 AM 1475.4%
10:00 AM 1716.3%
11:00 AM 1816.7%
12:00 PM 1886.9%
1:00 PM 1696.2%
2:00 PM 1605.9%
3:00 PM 1324.9%
4:00 PM 1073.9%
5:00 PM 923.4%
6:00 PM 913.3%
7:00 PM 963.5%
8:00 PM 833.1%
9:00 PM 782.9%
10:00 PM 792.9%
11:00 PM 772.8%
Total 2717100.0%

Comments by Blog Entry Date/Time

Day Entry MadeAvg.Total
Sunday 5.54144
Monday 5.22339
Tuesday 4.28419
Wednesday 7.67637
Thursday 6.90607
Friday 5.48411
Saturday 5.33160
Total 5.842717

Hour1 Entry MadeAvg.Total
12:00 AM 5.0035
1:00 AM 1.002
5:00 AM 0.000
7:00 AM 7.0035
8:00 AM 5.35107
9:00 AM 6.32278
10:00 AM 6.47246
11:00 AM 4.41181
12:00 PM 6.88330
1:00 PM 3.00111
2:00 PM 5.41222
3:00 PM 8.64285
4:00 PM 4.0589
5:00 PM 5.92154
6:00 PM 4.52113
7:00 PM 9.67174
8:00 PM 9.80147
9:00 PM 5.05111
10:00 PM 5.4265
11:00 PM 4.5732
Total 5.842717

Learn More About Comment Stats
1 - All times GMT -8...


Blog Stats

Favorite Web Sites

My Books

My MSDN Articles