Microsoft KB Archive/816166

= How to set focus to Web Form controls by using client-side script in Visual C# =

Article ID: 816166

Article Last Modified on 5/21/2007

-

APPLIES TO


 * Microsoft ASP.NET 1.1
 * Microsoft ASP.NET 1.0
 * Microsoft Visual C# 2005 Express Edition
 * Microsoft Visual C# .NET 2003 Standard Edition
 * Microsoft Visual C# .NET 2002 Standard Edition

-





For a Microsoft Visual Basic .NET version of this article, see 316719.

IN THIS TASK
 SUMMARY 

Requirements

 

Using Client-Side Script with Visual Studio .NET

 

Verification

 

Complete Code Listing

 REFERENCES

<div class="summary_section">

SUMMARY
This article describes how to set focus to an ASP.NET Web Form control by using client-side script.

ASP.NET Web Form controls provide a similar appearance to the conventional HTML controls while they provide a consistent and structured interface and more robust features. Additionally, you can use client-side scripting to enhance the functionality that these controls provide.

back to the top

Requirements
The following items describe the recommended hardware, software, and network infrastructure that are required to perform the procedures in this article:
 * Visual Studio .NET or Visual Studio 2005
 * Microsoft Internet Information Services (IIS) 5.0 (or later)

This article also assumes that you are familiar with the following:
 * Web applications
 * ASP.NET
 * Visual C# .NET or Visual C# 2005

back to the top

Using Client-Side Script with Visual Studio .NET or Visual Studio 2005
ASP.NET Web Form controls offer the appearance and functionality of the conventional HTML controls by generating the HTML elements on the client browser when the page is loaded. But unlike the HTML counterparts, ASP.NET Web Form controls provide a consistent and structured interface and more features, such as automatic postback and the ability to generate multiple HTML elements from a single control. You can also use client-side scripting with these controls to provide additional functionality, such as setting the focus on an ASP.NET Web Form control.

The following procedure creates an ASP.NET Web application that displays three ASP.NET TextBox controls with the corresponding CommandButton controls for setting their focus. These CommandButton controls run client-side JavaScript to dynamically set focus on a specified server-side control: <ol> Start Visual Studio .NET or Visual Studio 2005.</li> Create a new ASP.NET Web Application project in Visual C# .NET or in Visual C# 2005, and then name it ClientSideScriptExample.</li> Switch to the HTML view of the WebForm1.aspx window.</li>  In the HTML window of WebForm1, copy and paste the following code between the opening and closing form tags. It displays the two TextBox controls with the corresponding command buttons:

Important When you paste the code in the HTML window, paste the code segments as HTML (right-click and then click Paste as HTML). InputBox 1: <asp:TextBox ID=&quot;txtInput1&quot; Runat=&quot;server&quot; Width=&quot;50&quot; /> InputBox 2: <asp:TextBox ID=&quot;txtInput2&quot; Runat=&quot;server&quot; Width=&quot;50&quot; /> Click a button to set focus on the specified control: <input ID=&quot;cmdButton1&quot; type=&quot;button&quot; value=&quot;InputBox 1&quot; OnClick=&quot;return cmdButton1_Clicked&quot;> <input ID=&quot;cmdButton2&quot; type=&quot;button&quot; value=&quot;InputBox 2&quot; OnClick=&quot;return cmdButton2_Clicked&quot;> </li>  Copy and paste the following code in your page. Each command button runs a client-side JavaScript function that sets focus on a particular control on the form. Make sure that you position the code block before the first <BODY> tag: function cmdButton1_Clicked {                       Form1.txtInput1.focus; return false; } function cmdButton2_Clicked {       Form1.txtInput2.focus; return false; } </li>  Copy and paste the following code in your page. Make sure that you position the code block before the first </BODY> tag: <body onload=&quot;Form1.txtInput1.focus&quot; > </li> Click Save.</li> On the Debug menu, click Start to build and run the application. WebForm1 is displayed on the screen. Two input boxes and two corresponding command buttons are displayed.</li> Click InputBox 1 and the focus moves to the txtInput1 control. Click the InputBox 2. Focus moves to the txtInput2 control.</li> Close the browser.</li></ol>

back to the top

Verification

 * 1) Click InputBox 1 to shift focus to the txtInput1 control.
 * 2) Click InputBox 2 to shift focus to the txtInput2 control. You can expect this code to not cause a call to the server and to not reload the page.

back to the top

Complete Code Listing
<%@ Page language=&quot;c#&quot; Codebehind=&quot;WebForm1.aspx.cs&quot; AutoEventWireup=&quot;false&quot; Inherits=&quot;ClientSideScriptExample.WebForm1&quot; %> <!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; >

WebForm1 <meta name=&quot;GENERATOR&quot; Content=&quot;Microsoft Visual Studio .NET 7.1&quot;> <meta name=&quot;CODE_LANGUAGE&quot; Content=&quot;C#&quot;> <meta name=vs_defaultClientScript content=&quot;JavaScript&quot;> <meta name=vs_targetSchema content=&quot;http://schemas.microsoft.com/intellisense/ie5&quot;> function cmdButton1_Clicked {  document.all('txtInput1').focus; return false; }           function cmdButton2_Clicked {  document.all('txtInput2').focus; return false; } <body MS_POSITIONING=&quot;GridLayout&quot;> <form id=&quot;Form1&quot; method=&quot;post&quot; runat=&quot;server&quot;> InputBox 1: <asp:TextBox ID=&quot;txtInput1&quot; Runat=&quot;server&quot; Width=&quot;50&quot; /> InputBox 2: <asp:TextBox ID=&quot;txtInput2&quot; Runat=&quot;server&quot; Width=&quot;50&quot; /> Click a button to set focus on the specified control: <input ID=&quot;cmdButton1&quot; type=&quot;button&quot; value=&quot;InputBox 1&quot; OnClick=&quot;return cmdButton1_Clicked&quot;> <input ID=&quot;cmdButton2&quot; type=&quot;button&quot; value=&quot;InputBox 2&quot; OnClick=&quot;return cmdButton2_Clicked&quot;> <body onload=&quot;Form1.txtInput1.focus&quot; > Note The code that is generated in Visual Studio 2005 is different from the code that is generated in Visual Studio .NET.

back to the top

<div class="references_section">