Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Set Focus Controls - AutoPostBack = true

0.00/5 (No votes)
3 Sep 2009 1  
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

This articles was originally at wiki.asp.net but has now been given a new home on CodeProject. Editing rights for this article has been set at Bronze or above, so please go in and edit and update this article to keep it fresh and relevant.


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.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here