We had a bit of a haitus from Toolkit releases when we were focused on MIX. Since the show, though, we’ve been cranking through bugs and community asks.
The new bits are available. This is another solid release with lots of resolved bugs (about 125!) as well as work items we’ve been wanting to get to:
Designer Support for the TabContainer. This has been one of our top asks. You can now choose, add, or remove tabs directly from the designer. Note you can not onlyi directly edit the content but the tab title as well.
ASP.NET validatiors now work properly with the Toolkit controls, another top ask from the community.
Extended event support – we’ve added a lot more events to allow better interaction with Toolkit components on the client side. For example, we’ve added events that are raised when a ModalPopup is shown or hidden.
Automated Page Method callback generation. Tired of fishing through the samples trying to figure out how that callback method should be declared? No more, one click does it all.
If you’re using a WebService, you can just cut and paste this code right out of the page and into your service.
Script Combining. With the Toolkit, we made the decision to have components be responsible for their own scripts, as opposed to having one mondo-script file with all the script for the whole Toolkit. This was the right call, as it allows adding to the Toolkit without having everyone pay a penalty for the added items. However, for components with deep dependancies, this could add up to a lot of individual script files which caused multiple requests back to the server – a problem on slower connections. We’ve not got functionality such that all of the scripts needed for all of the Toolkit components on the page will be dynamically combined into just one script file and sent down that way.
So I created a simple page with a bunch of extenders on it: AutoComplete, CascadingDropDown, Accordion, Animation, and Calendar. Here’s how the network traffic looked before this change:
18 requests (11 of which were for Toolkit scripts), and 1.3s total time in my very non-scientific test.
Now, with ScriptCombining enabled, we get…
A very small size savings (4KB – but remember FireBug is reporting the final size of the scripts, not the size over the wire; we support GZIP and DEFLATE so the transmission sizes are much smaller), but a big savings in requests – we now get one request for Toolkit scripts instead of 11. In this scenario, we also got about a 50% download speed improvement by only having one request.
To enable Script Combining simply change your ScriptManager to be an Ajax Control Toolkit “ToolkitScriptManager” and you’re set…
Dynamic Context support for components doing callbacks. One of the things we were missing on some of our components was an ability to send arbitrary context back with the webservice callbacks. The idea here is that you want to be able to share a WebMethod among multiple extenders, so you need somewhere to stuff the context that differeniates them. We’ve made this standard across all the components that make these AJAX callbacks.
We had a lot of fun with this release, and got some great help from our contributors and even some great patch-fixes from the community.