Every time user’s complaints me about page scroll issues.
For example: If a lengthy page having a dropdown list with AutoPostBack = true at bottom of page. After the selection page gets reloaded and focus will be on top of the page. User needs to again scroll down the page for next key in. Here a sample solution for help...
c#
public void SetFocus(Page sPage)
{
string[] sCtrl = null;
string sCtrlId = null;
Control sCtrlFound = default(Control);
string sCtrlClientId = null;
string sScript = null;
sCtrl = sPage.Request.Form.GetValues("__EVENTTARGET");
if ((sCtrl != null))
{
sCtrlId = sCtrl[0];
sCtrlFound = sPage.FindControl(sCtrlId);
if ((sCtrlFound != null))
{
sCtrlClientId = sCtrlFound.ClientID;
sScript = "<SCRIPT language='javascript'>document.getElementById('" + sCtrlClientId + "').focus(); if (document.getElementById('" + sCtrlClientId + "').scrollIntoView(false)) {document.getElementById('" + sCtrlClientId + "').scrollIntoView(true)} </SCRIPT>";
sPage.ClientScript.RegisterStartupScript(typeof(string), "controlFocus", sScript);
}
}
}
Call this function on page load
Example: SetFocus(this);
vb.net
Public Sub SetFocus(ByRef sPage As Page)
Dim sCtrl() As String
Dim sCtrlId As String
Dim sCtrlFound As Control
Dim sCtrlClientId As String
Dim sScript As String
sCtrl = sPage.Request.Form.GetValues("__EVENTTARGET")
If Not IsNothing(sCtrl) Then
sCtrlId = sCtrl(0)
sCtrlFound = sPage.FindControl(sCtrlId)
If Not IsNothing(sCtrlFound) Then
sCtrlClientId = sCtrlFound.ClientID
sScript = "<SCRIPT language='javascript'>document.getElementById('" + sCtrlClientId + "').focus(); if (document.getElementById('" + sCtrlClientId + "').scrollIntoView(false)) {document.getElementById('" + sCtrlClientId + "').scrollIntoView(true)} </SCRIPT>"
sPage.RegisterStartupScript("controlFocus", sScript)
End If
End If
End Sub
Example: Me.SetFocus(Page)
This will set focus on last used dropdown list.