It is a fairly well known technique to use Response.Buffer and Response.Flush to make a "please wait" or "Loading..." message appear when you know a page is going to take a while to load. So I was quite estatic when I read on ScottGu's blog that someone (Daniel Fisher) had done what I've wanted to do for a while: formalize this trick into a nice tidy custom control you can just drop onto a page. You can see it here: http://www.lennybacon.com/PleaseWaitBuildingAWaitScreenControlForASPNET.aspx. It is really a very slick control. However, there was one problem I couldn't (and still can't) figure out which stopped me from writing this control initially. When I look more closely at Daniel's code, I noticed that he hadn't solved this problem either.
The problem
How do you write the control so that it doesn't wrap a specific function but instead works against the natural page loading time itself. Here's a scenario to help describe what I mean. Lets say you develop a page with a couple GridView's and DetailsViews bound to SqlDataSource's. Everything works great in your mock up but as soon as you deploy it against your live data, you find that the page takes 2-8 seconds to load. It would be awesome if you could simple take this "loading ..." control, drop it onto your page and -bang- the functionality is added. Now, I know there's an easy solution using Daniels code and simple adding the DataBinding logic into his OnProcess method, but that's not the point. This should be a drag-and-drop solution.
The challenge
Create a custom control that provides similar functionality to Daniels but works against the page processing time. A "drag and drop" kind of solution. If you think you can do something that even I can't figure out how to do, please contact me through my blog and I will get back to you over email. I'll post the best submissions I receive and declare the submitters to be "Elite ASP.NET Hackers"