Welcome to Professional ASP.NET - Chris Love's Official Blog Sign in | Join | Help

Chris Love's Official ASP.NET Blog

Chris Love's Helpful tips, tricks and pragmatic development knowledge for the ASP.NET world.
Add to Technorati Favorites


ASP Insider
Utilizing DefaultFocus to Enhance User Experience

One of the cool features of ASP.NET 2.0 that I love to use if the DefaultFocus property of the Form object. Combining it along with the DefaultButton property can go a long way to enhancing the user experience on your web sites.
The DefaultFocus property accepts a String value that allows it to reference the control you want to set focus to. This can be accessed by calling the control’s UniqueId property, which returns a string with the full name of the control. This is important because there might be multiple txtFirstName textboxes in a grid or some other parent child control structure. A UniqueId would look something like ctl00$ContentPlaceHolder_MyRepeater$MyRepeater1$txtFirstName.
I am finding that my clients are very satisfied with the use of these two properties. But I found a very cool use for the DefaultFocus property this week. You can use the DefaultFocus property in the event handler of an AutoPostback control. For example if you have a DropDownList that has a SelectedIndexChanged event handler you could direct the default focus to an appropriate control based on the selected value.

 

Partial Class Chapter_4_DefaultButtonandDefaultFocus

    Inherits System.Web.UI.Page

 

    Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged

        If DropDownList1.SelectedValue > 1 Then

            TextBox1.Visible = False

            TextBox2.Visible = True

            MyBase.Form.DefaultFocus = TextBox2.UniqueID

        Else

            TextBox1.Visible = True

            TextBox2.Visible = False

            MyBase.Form.DefaultFocus = TextBox1.UniqueID

        End If

    End Sub

 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        TextBox1.Visible = False

        TextBox2.Visible = False

    End Sub

 

End Class


In my particular circumstance I was hiding and displaying controls depending on the choice in a DropDownList. For example you may want to know a student’s SSN if they are a new admission or their StudentId if they are an existing student. In this case I might have a row in my form for the SSN and a row for the StudentId and depending on the selection of the student type from a drop-down I would display the proper field and corresponding row. To make the form easier to navigate I can use the DefaultFocus property to set the focus to the newly displayed textbox to collect the information I want. I have made the choice for the user much easier to know what to do next too.
Let’s face it a typical software user is lazy. Our job is to make their use of our applications as easy and painless as possible. Using these two properties if key to accomplishing this task, and they are very easy to implement.

Posted: Sunday, March 18, 2007 1:04 PM

by Chris Love

Comments

Rachel said:

Hey, I know it's been a while and all, but I've just found your post through Google and I didn't know this property, DefaultFocus.

Do you know if there would be any difference between what you've done:

           MyBase.Form.DefaultFocus = TextBox1.UniqueID

And using the .Focus() method of the Control Class? In this case:

           TextBox1.Focus()

# August 27, 2008 10:18 AM
Leave a Comment

(required) 

(required) 

(optional)

(required) 

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS