Today I got a couple of emails from several people who've run into a couple of issues with the wwHoverPanel AJAX control I posted a couple of weeks back. Interesting how things like that always seem to 'batch up'. The control has been out for a couple of weeks and that was the first feedback I ended up with. Anyway, I found the myself a couple of days after initially putting out the control and had fixed it immediately, but I've been really busy and so I hadn't been able to post an update to the wwHoverPanel class until today - I guess sometimes I need the kick in the ass.
The original release had a couple of issues that were causing problems:
Containership naming issues
This one's a little embarrassing: The control would fail in the various panel modes if hosted inside of a container control of any kind. This means hosted inside of a Master Page as well as any User Control, Panel or other container control. The problem is that the control names on the client got embedded using UniqueID rather than the correct ClientID. UniqueID uses $ for name separators while ClientID uses _. Anyway this issue was fixed a while ago, but I didn't get it up until just now.
Hover Panel AdjustWindowPosition adjustments
The control can automatically adjust its window position if the hover content pops too low on the Web page and starts scrolling off the bottom. If AdjustWindowPosition is true, the control will automatically keep the hover window high enough to show the whole window. This behavior was a bit flakey before and should work now. Thanks to Mike McDonald's comment that had it spot on.
Aborted Hover Navigation updates
I've also changed the behavior where a navigation is delayed and gets aborted by mousing off the control. Previously the mouse off would clear the mouse position and then still end up showing the result at the invalid mouse position which resulted in the window popping up at the top of the screen. This has now been changed so that the window is not displayed once you've navigated (ie. HidePanel was called).
The containership issue was pretty major and I'm sorry that I didn't catch that before it went out even. Eeek.
FWIW, I've been working on a new project where this control is being used for a number of remote call scenarios and it's working extremely well.
Anybody else playing with the Page Callbacks? Any problems? I've been using the JSON two-way call support to pass business objects into a page, updating the values and sending it back and it's really working out great in terms of minimizing the traffic that goes back and forth on the remote HTTP calls. The nice thing about more complex objects is that you can do away with excessive calls back and forth to the server, but rather send a couple requests with state maintained on the client to some degree.
I was talking with another developer who's having major scalability problems with an AJAX solution due to the fact that the AJAX requests are overwhelming the server with too much traffic. He's passing very small chunks of data back and forth, but there's a lot of them – as many as 20 for typical page hits just to load up the page (it's a pretty complex interface so this isn't as unreasonable as it sounds).
But we have to keep in mind that when we send 'small' chunks of data to the server and back, our data may only be a few bytes in length, but HTTP adds headers on both ends of the connection. Client headers especially can often be a few k bytes. So your integer AJAX return value is still costing 10k in network traffic. Something to think about…
Other Posts you might also like