|Written by||Imar Spaanjaars|
|Listened to||I Love Her All the Time by Sonic Youth (Track 4 from the album: Bad Moon Rising)|
Are you looking to hire an experienced software developer or .NET consultant? Then get in touch with me through my company's web site at devierkoeden.com
Found an interesting article on this site? Got inspired by something you read here? Then consider making a donation with PayPal.
Like this article? Or do you think it sucks? Make yourself heard by casting your vote below.Total number of ratings: 72
I just tried this concept in a larger application using validator controls, and then things seems to break. Somehow, the validator controls and switching the DefaultButton dynamically don't play nice together. I haven't yet found a work-around, but if you know a way to fix this, please let me know.
It's not uncommon that your page contains multiple text boxes and buttons that should each fire different events at the server. For example, consider the two boxes at the top of my web site. The first Go button should fire a search action with the search term entered in the first text box. The second button should take you directly to an article specified by a Quick Doc ID in the second text box.
Most users will fill in one of the two text boxes, simply hit enter and then expect the proper action to be carried out. But in my current site (built with .NET 1.1) this is not the case. (Try it and you'll see what I mean). If you enter a search term and hit enter, you go to the search page. However, if you enter a Quick Doc ID and hit enter, nothing happens.
The new DefaultButton from ASP.NET 2.0 is a welcome addition in that it allows you to specify the button that must be "clicked" when you hit enter. However, in the scenario described above, this is not enough. If I am typing a search term, I want the first Go button to be the DefaultButton and if I am entering a Quick Doc ID I want the second button to be the DefaultButton.
Fortunately, switching what button is considered the default button at run-time isn't too difficult. If you look at the source of a page that has the DefaultButton set up, you'll see something similar to the following in the <form> tag:
txtQuickSearch.Attributes.Add("onclick", "document.forms.onkeypress = " + "new Function(\"return WebForm_FireDefaultButton(event, '" + btnQuickSearch.UniqueID + "');\");"); txtQuickDocId.Attributes.Add("onclick", "document.forms.onkeypress = " + "new Function(\"return WebForm_FireDefaultButton(event, '" + btnQuickDocId.UniqueID + "');\");");
Whenever you click the search text box, onclick is fired and WebForm_FireDefaultButton is called. This method is then passed the unique ID of the appropriate button. The same applies to the Quick Doc ID button: when you click it, WebForm_FireDefaultButton is called and the DefaultButton is switched again.
Wonder where to go next?
You can read existing comments below
or you can post a comment yourself on this article
Consider making a donation
Please consider making a donation using PayPal. Your donation helps me to pay the bills so I can keep running Imar.Spaanjaars.Com, providing fresh content as often as possible.
I am interested in what you have to say about this article. Feel free to post any comments, remarks or questions you may have about this article. The Talk Back feature is not meant for technical questions that are not directly related to this article. So, a post like "Hey, can you tell me how I can upload files to a MySQL database in PHP?" is likely to be removed. Also spam and unrealistic job offers will be deleted immediately.
When you post a comment, you have to provide your name and the comment. Your e-mail address is optional and you only need to provide it if you want me to contact you. It will not be displayed along with your comment. I got sick and tired of the comment spam I was receiving, so I have protected this page with a simple calculation exercise. This means that if you want to leave a comment, you'll need to complete the calculation before you hit the Post Comment button.
For more information about the Talk Back feature, check out this news item.
Unfortunately, something went wrong and your message or comments have not been submitted successfully.
There's a fair chance things broke down because you tried to post something that looks like HTML. Things that look like HTML include (X)HTML, obviously, XML, ASP.NET markup and c# generics syntax as all of them use the < and > characters.
If that's the case, try altering your message and remove anything that looks like an angled bracket. You can replace them with [ and ] for example so you can still make it look like HTML to some extend.
If, on the other hand, you were trying to spam this web site, I am pretty glad I caught you in the act and stopped you from doing so ;-)
The number you entered is not correct. Please enter the sum of the two numbers again.