1. Setting the page directive attribute "MaintainScrollPosition" to be false
2. Registering a start up script: $(window).scrollTop(0)
3. Registering a start up script: $("#s4-workspace").scrollTop(0)
4. Attempted to register the the functions via a client script block to add a "pageLoaded" event
The short of it was that none of these worked. I decided to dive in to the HTML source and discovered a "_maintainWorkspaceScrollPosition" hidden field. This looked amazingly like the MaintainScrollPosition functionality, I thought I might be on the right path. The "Workspace" term jumped out at me since the SharePoint custom application page's content is in the s4-workspace; I started to get the feeling that this was a SharePoint feature. After searching all the files for the hidden field, I discovered it was only referenced in the SharePoint JavaScript files. Searching the internet did not yield any solutions on ways to disable the feature. So I generated a function that I would execute to scroll the page to the top.
function scrollToTop() { $(window).scrollTop(0); $("#s4-workspace").scrollTop(0); $("#_maintainWorkspaceScrollPosition").val(0); }
The function above probably does more than required, but I don't control the Master Page and need to make sure the page can tolerate changes to Master Page style changes.
The server side needs to register a script to execute on the post back. This is a simple line that can be thrown about anywhere.
ScriptManager.RegisterStartupScript(this, this.Page.GetType(), "scrollToTop", "scrollToTop();", true)
2 comments:
Excellent, you save my life!
Thanks Brock, you're a real life saver!
Post a Comment