Introduction
Have any of your users ever told you that after filling that long data entry form he accidentally closed the browser or moved to another page and forgot to click the save button? I heard this story more than once, and at the end my responses I often told he user something like "Well, you should pay more attention when you're filling out a form." Of course, I didn't say it using these words, but that was the only thing we could say.
In fact, keeping track of fields that were changed in classical ASP.NET forms is not an easy task. Since every postback fires the onbeforeunload
event, there was no generic way of knowing if the postback was intentional or not. So we had to write a lot of custom JavaScript to manage that.
Now in the AJAX world, this limitation is gone. If we have a 100% "ajaxfied" page, the onbeforeunload
event will fire only if the user actually leaves the page. It makes our lives much easier.
This is a Panel that automatically detects if any control inside it was changed and shows an alert if the user tries to leave the page before saving the data.
Click here to see a sample page.
Using the code
Once again I am using the Anthem.NET library to give AJAX functionality.
This webcontrol inherits from the Anthem Panel, so what you need to do is to put all your data entry controls within this panel and set the property OnLeaveMessage
. This property corresponds to the message that will be shown when the user tries to leave the page without saving its contents. When the user actually clicks the save button, you need to tell the panel to store the new values so it won't show the alert when the user leaves the page. This is done by calling the panel's Reset
method when the data is saved.
The download file contains the webcontrol and a sample page.
Conclusion
This is a simple to use, yet very useful webcontrol that can enhance the usability of your web application.
I hope you enjoy it.