• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 263
  • Last Modified:

My content page has many user controls. How do I set the focus to a specific usercontrol?

Hello Experts,

I have an application that has 1 Master page and 7 content pages.  All the controls on my content pages are user controls.  How do I set the focus to a specific user control.

Thank you

Howard Katz
Howard Katz
  • 3
  • 2
1 Solution
Göran AnderssonCommented:
You can't set the focus to a user control. A user control is something that only exists on the server while the page is created. When the pave reaches the browser, all that is left is the html code that the controls created.

You have to set focus to one of the html elements in the page.
ZvonkoSystems architectCommented:
On the master page you can check wether the specific control is loaded or not and if loaded set the focus to that control.
But I would do set the focus in the apropriate content page. You need not to change the onLoad eent of the master page for that. Simply add a script line below the control and you are done.
Like this:

<form name="myForm" >
<input type="text" name="myField" id="myField" >
<!-- or if you prefer id -->

Open in new window

Howard KatzDatabase Report DeveloperAuthor Commented:
Zvonko, It is a user control I am trying to set the focus on.  The Id of the user control has an ID of D1009.  Using the script method you suggest gives an error as the page loads. Any other ideas
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

Göran AnderssonCommented:
As I said, you can't set focus to a user control. You have to set focus to a control that is rendered as an html element on the page.

Let's say that the user control in question contains a TextBox control with the id TextBox1.

Put a property in the user control so that the page can reach the text box:

Public ReadOnly Property FocusControl() As TextBox
            Return TextBox1
      End Get
End Property

In the page you add a Javascript to set focus to the control:

Page.ClientScript.RegisterStartupScript(Page.GetType(), "Focus", "document.getElementById('" + D1009.FocusControl.ClientID + "').focus();", True)
Howard KatzDatabase Report DeveloperAuthor Commented:
I think this is close and thank you for your help.  The user control does have a text box and I set up the property.

The user control is on a content page.  I am putting the Page.client.RegisterStartupScript in the Page_PreRender of the master page.  It does not compile and I get the error:
: Name 'D1009' is not declard.  

If i put it in like this it does compile

Page.ClientScript.RegisterStartupScript(Page.GetType(), "FocusControl", "document.getElementById('D1009.FocusControl.ClientID').focus();", True)

but when I run it I get
document.getElementById(...) is nul or not an object

any ideas?

Göran AnderssonCommented:
Put the code in the page instead of the master page, and it works.

If you want it in the master page, you have to cast the Page reference to the specific class of the page to access it's members:

Page.ClientScript.RegisterStartupScript(Page.GetType(), "Focus", "document.getElementById('" + DirectCast(Page, ActualClassOfThePage).D1009.FocusControl.ClientID + "').focus();", True)
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now