J
Jeff Voigt
I just need a few pointers from a few experts to help me finish this up.
In a nutshell I want to return the user to where they left off on a page
througout numerous postbacks. So far, and with little implementation I have
the following:
Public Class BasePage
Inherits System.Web.UI.Page
Private Sub BasePage_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
' get out if this is not a post back
If Not Page.IsPostBack Then Return
' get the object name that caused a post back
Dim objectName As String = CType(Request.Form("__EVENTTARGET"),
String)
' get out if the name is nothing
If objectName Is Nothing Then Return
If objectName.Length = 0 Then Return
' register a script to scroll back to this location when returning
RegisterStartupScript("scroll", "<script
language=javascript>document.forms[0]." + objectName +
".scrollIntoView();</script>")
End Sub
End Class
This works great if the user selects a dropdown item when the dropdown has
it's AutoPostback property set to True. Since all of my web pages are
derived from the BasePage this will work beautifully. There is one problem
however in that the __EVENTTARGET will not always refer to the object that
caused the postback. I need this in order for the object.scrollIntoView
java script to fire off.
I've gotten numerous tips as to how I can change it. The one I like best is
to have some kind of hidden fields that track the top/left x/y coordinate of
the window and store that in some hidden fields so on a post back I can
retrieve the values and then call a window.ScrollTo( x,y ) function rather
than relying on the object that caused the post back.
My question now would be, what javascript can I use to constantly store and
x,y coordinate into some hidden fields? I know how to add controls to the
page and get values out. I just need to know if there is a way I can get
the x,y values back from the page on a post back via (storing them in hidden
fields) or something else (if anyone has a better idea).
If this does not make sense, or someone knows a better way to achieve this
please let me know. I would really appreciate the constructive criticism.
Thanks,
- J
In a nutshell I want to return the user to where they left off on a page
througout numerous postbacks. So far, and with little implementation I have
the following:
Public Class BasePage
Inherits System.Web.UI.Page
Private Sub BasePage_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
' get out if this is not a post back
If Not Page.IsPostBack Then Return
' get the object name that caused a post back
Dim objectName As String = CType(Request.Form("__EVENTTARGET"),
String)
' get out if the name is nothing
If objectName Is Nothing Then Return
If objectName.Length = 0 Then Return
' register a script to scroll back to this location when returning
RegisterStartupScript("scroll", "<script
language=javascript>document.forms[0]." + objectName +
".scrollIntoView();</script>")
End Sub
End Class
This works great if the user selects a dropdown item when the dropdown has
it's AutoPostback property set to True. Since all of my web pages are
derived from the BasePage this will work beautifully. There is one problem
however in that the __EVENTTARGET will not always refer to the object that
caused the postback. I need this in order for the object.scrollIntoView
java script to fire off.
I've gotten numerous tips as to how I can change it. The one I like best is
to have some kind of hidden fields that track the top/left x/y coordinate of
the window and store that in some hidden fields so on a post back I can
retrieve the values and then call a window.ScrollTo( x,y ) function rather
than relying on the object that caused the post back.
My question now would be, what javascript can I use to constantly store and
x,y coordinate into some hidden fields? I know how to add controls to the
page and get values out. I just need to know if there is a way I can get
the x,y values back from the page on a post back via (storing them in hidden
fields) or something else (if anyone has a better idea).
If this does not make sense, or someone knows a better way to achieve this
please let me know. I would really appreciate the constructive criticism.
Thanks,
- J