This is a migrated thread and some comments may be shown as answers.

Set focus to textbox, combobox in user control after postback

1 Answer 983 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Jagat
Top achievements
Rank 1
Jagat asked on 19 Jul 2018, 05:33 PM

 

HI,

I have a user control for address on my web page. When the address or city is changed, i get a valid zip from external url and display it in the zip combobox.

All this works good but after postback, the focus is not set to the user control or to the field which caused postback.

I saved in session the control that is causing postback and tried to set focus to that control on prerender as shown below.

It still doesn't set the focus to the control. How to set the focus to these controls?

 

<asp:UpdatePanel runat="server" ID="up_ClientAddr" UpdateMode="Conditional"  ChildrenAsTriggers ="false"  >
 <ContentTemplate>
  
    <table>
        <tr>
            <td>
                <span>Address:</span>
                <asp:RequiredFieldValidator ID="reqAddr" runat="server" ControlToValidate="txtAddr1" ValidationGroup="Add"
                    ErrorMessage="Address is required." ToolTip="Address is required." SetFocusOnError="True"></asp:RequiredFieldValidator>
            </td>
            <td>
                <telerik:RadTextBox ID="txtAddr1" runat="server" OnTextChanged="txtAddr1_TextChanged" AutoPostBack="true"   >
                </telerik:RadTextBox>
                <asp:Label ID="lblAddr1" runat="server" Text=""></asp:Label>
            </td>
        </tr>
        <tr>
            <td>
                <span>Addr2/Apt#/Suite#: </span>
            </td>
            <td>
                <telerik:RadTextBox ID="txtAddr2" runat="server">
                </telerik:RadTextBox>
                <asp:Label ID="lblRAddr2" runat="server" Text=""></asp:Label>
            </td>
        </tr>
        <tr>
 
            <td>
                <telerik:RadComboBox ID="rcbCity" runat="server"  MarkFirstMatch="true"
                 AutoPostBack="true" OnSelectedIndexChanged="rcbCity_SelectedIndexChanged">
                </telerik:RadComboBox>
                <asp:Label ID="lblCity" runat="server" Text=""></asp:Label>
            </td>
        </tr>
        <tr>
            <td>
                <telerik:RadComboBox ID="rcbZip" runat="server" MarkFirstMatch="true">
                </telerik:RadComboBox>
                <asp:Label ID="lblZip" runat="server" Text=""></asp:Label>
            </td>
        </tr>
    </table>
    </ContentTemplate>
 </asp:UpdatePanel>

 

protected void txtAddr1_TextChanged(object sender, EventArgs e)
             {
                 Session["event_control"] = "txtAddr1";
                 GetZipCodeValidateAndUpdateZipCodeField();
             }
             protected void rcbCity_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
             {
                 Session["event_control"] = "rcbCity";
                 GetZipCodeValidateAndUpdateZipCodeField();
             }
 
             protected void rcbState_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
             {
                 Session["event_control"] = "rcbState";
                 GetZipCodeValidateAndUpdateZipCodeField();
             }
 
 
 
protected void Page_PreRender(object sender, EventArgs e)
             {
                 if (Session["event_control"] != null)
                 {
                     if (Session["event_control"].ToString() == "txtAddr1")
                     {
                         txtAddr1.Focus();
                     }
                     else if (Session["event_control"].ToString() == "rcbCity")
                     {
                         txtAddr1.Focus();
                     }
                     else if (Session["event_control"].ToString() == "rcbState")
                     {
                         txtAddr1.Focus();
                     }
                 }
             }

 

 

 

Thanks in Advance

1 Answer, 1 is accepted

Sort by
0
Rumen
Telerik team
answered on 20 Jul 2018, 02:11 PM
Hello Jagat,

You can set the focus via script as shown in the following article: Executing JavaScript Code from Server -> When using ASP.NET AJAX.

<form id="form1" runat="server">  
    <asp:ScriptManager ID="ScriptManager2" runat="server">  
    </asp:ScriptManager>  

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">  
        <ContentTemplate>  
            <telerik:RadTextBox ID="txtAddr1" runat="server" OnTextChanged="txtAddr1_TextChanged" AutoPostBack="true"   >
                </telerik:RadTextBox>
        </ContentTemplate>  
    </asp:UpdatePanel>  
</form> 

On the server


    string scriptstring = "$get('txtAddr1').focus()";  
    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "setFocus", scriptstring, true);  
 


Best regards,
Rumen
Progress Telerik
Try our brand new, jQuery-free Angular components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
Tags
General Discussions
Asked by
Jagat
Top achievements
Rank 1
Answers by
Rumen
Telerik team
Share this question
or