<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Delay's Blog : AJAX Control Toolkit</title><link>http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx</link><description>Tags: AJAX Control Toolkit</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Successfully passing the baton [AJAX Control Toolkit release!]</title><link>http://blogs.msdn.com/delay/archive/2008/08/21/successfully-passing-the-baton-ajax-control-toolkit-release.aspx</link><pubDate>Fri, 22 Aug 2008 08:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8886878</guid><dc:creator>Delay</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/delay/comments/8886878.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=8886878</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/bleroy/archive/2008/08/21/ajax-control-toolkit-released-for-net-3-5-sp1.aspx" mce_href="http://weblogs.asp.net/bleroy/archive/2008/08/21/ajax-control-toolkit-released-for-net-3-5-sp1.aspx"&gt;Bertrand Le Roy posted earlier today&lt;/A&gt; about the new &lt;A href="http://www.codeplex.com/AjaxControlToolkit/Release/ProjectReleases.aspx?ReleaseId=16488" mce_href="http://www.codeplex.com/AjaxControlToolkit/Release/ProjectReleases.aspx?ReleaseId=16488"&gt;20820 release&lt;/A&gt; of the &lt;A href="http://www.asp.net/ajax/ajaxcontroltoolkit/samples/" mce_href="http://www.asp.net/ajax/ajaxcontroltoolkit/samples/"&gt;AJAX Control Toolkit&lt;/A&gt;! In addition to being compiled for the recently available &lt;A href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx" mce_href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx"&gt;.NET 3.5 SP1 platform&lt;/A&gt; and containing a new user-contributed control (MultiHandleSlider by &lt;A href="http://www.dimebrain.com/" mce_href="http://www.dimebrain.com/"&gt;Daniel Crenna&lt;/A&gt;), this release is also notable from my perspective because it represents the first release for which I was not directly involved. As much as I've enjoyed working on the Toolkit, there are only so many hours in the day; organizational changes and my present responsibilities developing for &lt;A href="http://www.microsoft.com/silverlight/" mce_href="http://www.microsoft.com/silverlight/"&gt;Silverlight&lt;/A&gt; are taking up all of my time. So it has been fantastic to have Bertrand continue moving the Toolkit project forward and taking care of all the many tasks that go into publishing a new release. &lt;/P&gt;
&lt;P&gt;Congratulations to Bertrand - and all the &lt;A href="http://www.codeplex.com/AjaxControlToolkit/Wiki/View.aspx?title=PatchHallOfFame" mce_href="http://www.codeplex.com/AjaxControlToolkit/Wiki/View.aspx?title=PatchHallOfFame"&gt;individual contributors&lt;/A&gt;! Thank you for the hard work that made this release possible! &lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8886878" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>Brought to you by community contributions [AJAX Control Toolkit release!]</title><link>http://blogs.msdn.com/delay/archive/2008/02/29/brought-to-you-by-community-contributions-ajax-control-toolkit-release.aspx</link><pubDate>Fri, 29 Feb 2008 23:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7961710</guid><dc:creator>Delay</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/delay/comments/7961710.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=7961710</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;We've just published the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=11121" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=11121"&gt;20229 release&lt;/A&gt; of the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;AJAX Control Toolkit&lt;/A&gt;! This release was one of our most community-driven and features 10 contributor code patches with improvements across the set of Toolkit controls. We really appreciate community involvement and specifically recognize our contributors in a &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Wiki/View.aspx?title=PatchHallOfFame" mce_href="http://www.codeplex.com/AtlasControlToolkit/Wiki/View.aspx?title=PatchHallOfFame"&gt;Toolkit Patch Hall of Fame&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;This release addresses over 200 users votes in areas including: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Tab support for Visible=false&lt;/LI&gt;
&lt;LI&gt;ValidatorCallout support for server-side validation&lt;/LI&gt;
&lt;LI&gt;ValidatorCallout support for CSS styling&lt;/LI&gt;
&lt;LI&gt;Calendar improvements for Safari&lt;/LI&gt;
&lt;LI&gt;Tab support for starting out blank&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;As always, it's easy to &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;sample any of the controls&lt;/A&gt; (no install required). You can also &lt;A href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit" mce_href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit"&gt;browse the project web site&lt;/A&gt;, &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx"&gt;download the latest Toolkit&lt;/A&gt;, and start creating your own controls and/or contributing to the project! &lt;/P&gt;
&lt;P&gt;If you have any feedback, please share it on the &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;support forum&lt;/A&gt;! &lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7961710" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>Getting the Toolkit working with the VS 2008 web site designer [AJAX Control Toolkit 11119 release update!]</title><link>http://blogs.msdn.com/delay/archive/2007/11/29/getting-the-toolkit-working-with-the-vs-2008-web-site-designer-ajax-control-toolkit-11119-release-update.aspx</link><pubDate>Fri, 30 Nov 2007 01:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6603922</guid><dc:creator>Delay</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/delay/comments/6603922.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=6603922</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;Since last week's release of the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=8513" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=8513"&gt;11119 version&lt;/A&gt; of the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;AJAX Control Toolkit&lt;/A&gt;, some people have reported problems using the .NET 3.5 flavor of the Toolkit with the Visual Studio 2008 web designer. Our team has just updated the 3.5 ZIPs (&lt;CODE&gt;AjaxControlToolkit-Framework3.5.zip&lt;/CODE&gt; and &lt;CODE&gt;AjaxControlToolkit-Framework3.5-NoSource.zip&lt;/CODE&gt;) available from the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=8513" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=8513"&gt;11119 release page&lt;/A&gt; to address the issue. Whereas the old assembly had version number &lt;STRONG&gt;3.5.11119.*&lt;/STRONG&gt;, the new assembly has version number &lt;STRONG&gt;3.0.11119.*&lt;/STRONG&gt;. This is the &lt;EM&gt;only&lt;/EM&gt; change to the Toolkit and &lt;EM&gt;only&lt;/EM&gt; the 3.5 version has been updated.&lt;/P&gt;
&lt;P&gt;If you have already downloaded the 3.5 flavor of the Toolkit, please remove the Toolkit from your Toolbox (if present), download the new 3.5 ZIPs, extract the new files over top of the existing ones, and designer support should work as expected. We apologize for any inconvenience this may have caused.&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6603922" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>A big day for development tools [AJAX Control Toolkit release!]</title><link>http://blogs.msdn.com/delay/archive/2007/11/19/a-big-day-for-development-tools-ajax-control-toolkit-release.aspx</link><pubDate>Tue, 20 Nov 2007 04:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6416933</guid><dc:creator>Delay</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/delay/comments/6416933.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=6416933</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;A short while ago we published the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=8513" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=8513"&gt;11119 release&lt;/A&gt; of the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;AJAX Control Toolkit&lt;/A&gt; to coincide with &lt;A href="http://msdn2.microsoft.com/vstudio/" mce_href="http://msdn2.microsoft.com/vstudio/"&gt;today's release of .NET 3.5 and Visual Studio 2008&lt;/A&gt;! As usual, we have published "source" and "no-source" versions for .NET 2.0/Visual Studio 2005 and .NET 3.5/Visual Studio 2008.&lt;/P&gt;
&lt;P&gt;The content of the 11119 release is largely the same as our previous 10920 release, with most changes being minor tweaks to the .NET 3.5 flavor of the Toolkit:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;All web.config files were updated to match the shipping configuration of ASP.NET/AJAX 3.5.&lt;/LI&gt;
&lt;LI&gt;The AssemblyVersion/AssemblyFileVersion of the .NET 3.5 version of AjaxControlToolkit.dll was changed from 1.0.x.y to 3.5.x.y to more clearly identify its association with .NET 3.5 (the .NET 1.0 version of the assembly remains as 1.0.x.y).&lt;/LI&gt;
&lt;LI&gt;All of the new code analysis warnings resulting from improvements to the VS 2008 code analysis feature were addressed.&lt;/LI&gt;
&lt;LI&gt;The "Add Page Method" design-time feature was re-enabled because the blocking issue in VS 2008 Beta 2 was been fixed.&lt;/LI&gt;
&lt;LI&gt;A design-time workaround for XML namespace alterations to a control's inner property content was removed because the problematic VS 2008 Beta 2 behavior was addressed.&lt;/LI&gt;&lt;/UL&gt;The following changes were common to both the .NET 1.0 and .NET 3.5 flavors of the Toolkit: 
&lt;UL&gt;
&lt;LI&gt;A minor documentation correction was made to the ModalPopup sample page's descriptions of the OkCancel* properties.&lt;/LI&gt;
&lt;LI&gt;A fix was made to AutoComplete to better support the use of purely numeric values.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;As always, it's easy to &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;sample any of the controls&lt;/A&gt; (no install required). You can also &lt;A href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit" mce_href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit"&gt;browse the project web site&lt;/A&gt;, &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx"&gt;download the latest Toolkit&lt;/A&gt;, and start creating your own controls and/or contributing to the project!&lt;/P&gt;
&lt;P&gt;If you have any feedback, please share it with us on the &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;support forum&lt;/A&gt;!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6416933" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>You voted lots, we fixed lots [AJAX Control Toolkit release!]</title><link>http://blogs.msdn.com/delay/archive/2007/09/21/you-voted-lots-we-fixed-lots-ajax-control-toolkit-release.aspx</link><pubDate>Fri, 21 Sep 2007 22:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5038512</guid><dc:creator>Delay</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/delay/comments/5038512.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=5038512</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;Last night we published the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=4941" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=4941"&gt;10920 release&lt;/A&gt; of the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;AJAX Control Toolkit&lt;/A&gt;. This release continued our trend of focusing on the most popular bugs and work items identified by the user community in the &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;support forum&lt;/A&gt; and &lt;A href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/List.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/List.aspx"&gt;online issue tracker&lt;/A&gt;. A number of popular issues got fixed in this release, addressing nearly 1000 user votes!&lt;/P&gt;
&lt;P&gt;The release notes from the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;sample web site&lt;/A&gt; detail the improvements: &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P style="MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;General fixes:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0px"&gt;
&lt;LI&gt;Controls with Embedded styles (Calendar, Tabs and Slider): Toolkit controls no longer need explicit style references when loaded asynchronously. For example, if a Calendar control is placed inside an UpdatePanel and made visible on an UpdatePanel postback, the embedded styles are now loaded properly.&lt;/LI&gt;
&lt;LI&gt;PopupBehavior positioning (AutoComplete, Calendar, DropDown, HoverMenu, ListSearch, PopupControl and ValidatorCallout): PopupBehavior now respects the position of its parent element even when the browser window is very narrow or the parent element is close the window edge.&lt;/LI&gt;
&lt;LI&gt;Focusing extended controls (Accordion, CollapsiblePanel, DropShadow, Tabs): Pages that use Toolkit controls which re-parent DOM elements can use a workaround to focus a specific element on page load. The new method Utility.SetFocusOnLoad ensures that the desired control receives focus.&lt;/LI&gt;&lt;/UL&gt;
&lt;P style="MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;Control specific fixes:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0px"&gt;
&lt;LI&gt;Calendar: Property to specify the position of Calendar, a default date feature that allows the calendar to start out with a selected date, and a consistent show, hide and focus story that makes the Calendar user experience more intuitive.&lt;/LI&gt;
&lt;LI&gt;ModalPopup: Ability to disable repositioning of the ModalPopup in response to window resize and scroll.&lt;/LI&gt;
&lt;LI&gt;ConfirmButton: ModalPopup functionality now supported in addition to the regular windows alert dialog.&lt;/LI&gt;
&lt;LI&gt;MaskedEdit: Extended Textbox no longer uses Invariant culture if no CultureName is specified and falls back to the Page Culture.&lt;/LI&gt;
&lt;LI&gt;AutoComplete: Allow users to associate additional data with the AutoComplete suggestions.&lt;/LI&gt;
&lt;LI&gt;Slider: Slider can be easily customized using its various CSS properties.&lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;As with the previous release, we have published "source" and "no-source" versions for .NET 2.0/Visual Studio 2005 as well as for .NET 3.5/Visual Studio 2008 (still in Beta). Unique to the 3.5/2008 versions are the following:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P style="MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;Features:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0px"&gt;
&lt;LI&gt;JavaScript IntelliSense support: We have added reference tags to all Toolkit JavaScript files that enables you to take advantage of new features in Visual Studio 2008 Beta 2. With the multi-targeting support in this Visual Studio Beta, IntelliSense will be available for the ASP.NET AJAX 1.0 flavor of the Toolkit as well. This article discusses the reference tag feature in detail.&lt;/LI&gt;
&lt;LI&gt;Extender designer support: Enhanced designer support for Toolkit controls using the new "Add Extender" user interface.&lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;One thing we'd hoped to include with this release didn't quite make it in: our new automated testing framework. This framework is based on a different approach than our current framework - one that makes it easy to add additional test cases and leverage existing ones across new scenarios. The new testing framework has already dramatically improved our test coverage, helped identify new issues, and made fixing existing issues less risky!&lt;/P&gt;
&lt;P&gt;But we've been iterating on the new framework for the past couple of weeks and faced the usual decision when it came time to finalize this release: slip or ship. We slipped our release date a little in the hopes that we'd be able to include the new framework with this release, but eventually decided not to delay all the great new Toolkit code any longer. We wanted our users to take advantage of the new bits &lt;STRONG&gt;ASAP&lt;/STRONG&gt; - so stay tuned for more on the new testing framework in a future release! &lt;/P&gt;
&lt;P&gt;As always, it's easy to &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;sample any of the controls&lt;/A&gt; (no install required). You can also &lt;A href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit" mce_href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit"&gt;browse the project web site&lt;/A&gt;, &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx"&gt;download the latest Toolkit&lt;/A&gt;, and start creating your own controls and/or contributing to the project!&lt;/P&gt;
&lt;P&gt;If you have any feedback, please share it with us on the &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;support forum&lt;/A&gt;!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5038512" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>A new Framework deserves a new Toolkit [AJAX Control Toolkit updated for .NET 3.5 Beta 2!]</title><link>http://blogs.msdn.com/delay/archive/2007/07/26/a-new-framework-deserves-a-new-toolkit-ajax-control-toolkit-updated-for-net-3-5-beta-2.aspx</link><pubDate>Fri, 27 Jul 2007 06:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4073973</guid><dc:creator>Delay</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/delay/comments/4073973.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=4073973</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;Earlier today &lt;A href="http://msdn2.microsoft.com/en-us/vstudio/default.aspx" mce_href="http://msdn2.microsoft.com/en-us/vstudio/default.aspx"&gt;Microsoft announced Beta 2 of Visual Studio 2008 and the .NET Framework 3.5&lt;/A&gt;. As usual, &lt;A href="http://weblogs.asp.net/scottgu/archive/2007/07/26/vs-2008-and-net-3-5-beta-2-released.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2007/07/26/vs-2008-and-net-3-5-beta-2-released.aspx"&gt;Scott Guthrie has a bunch of reasons why the new stuff is cool&lt;/A&gt;. My team has one more reason to add to the list:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;We've just updated the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=4923" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=4923"&gt;10618 Toolkit release&lt;/A&gt; with Beta 2 versions of the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;AJAX Control Toolkit&lt;/A&gt; that work seamlessly with VS 2008 and .NET 3.5!&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The Toolkit's new "Framework3.5" downloads contain the latest 10618 Toolkit code in a VS 2008 Beta 2 solution/project. What we've done is make a handful of tweaks to better integrate with the new VS 2008 web designer enhancements for ASP.NET AJAX extenders. As you'd expect, the Toolkit controls work the same as before - but the development experience with VS 2008 is better than ever.&lt;/P&gt;
&lt;P&gt;Download &lt;A href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx" mce_href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx"&gt;Visual Studio 2008 with the .NET Framework 3.5&lt;/A&gt;, the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=4923" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=4923"&gt;.NET 3.5 Beta 2 Toolkit&lt;/A&gt;, and find out for yourself!&lt;/P&gt;
&lt;P&gt;And if you have any feedback, please share it with us on the &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;support forum&lt;/A&gt;.&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4073973" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>Script combining made better [Overview of improvements to the AJAX Control Toolkit's ToolkitScriptManager]</title><link>http://blogs.msdn.com/delay/archive/2007/06/20/script-combining-made-better-overview-of-improvements-to-the-ajax-control-toolkit-s-toolkitscriptmanager.aspx</link><pubDate>Thu, 21 Jun 2007 01:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3431899</guid><dc:creator>Delay</dc:creator><slash:comments>14</slash:comments><comments>http://blogs.msdn.com/delay/comments/3431899.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=3431899</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;The 10606 release of the &lt;A href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit" mce_href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit"&gt;AJAX Control Toolkit&lt;/A&gt; introduced ToolkitScriptManager, a new class that extends the &lt;A href="http://ajax.asp.net/docs/overview/ScriptManagerOverview.aspx" mce_href="http://ajax.asp.net/docs/overview/ScriptManagerOverview.aspx"&gt;ASP.NET AJAX ScriptManager&lt;/A&gt; to perform automatic script combining. &lt;A href="http://blogs.msdn.com/delay/archive/2007/06/11/script-combining-made-easy-overview-of-the-ajax-control-toolkit-s-toolkitscriptmanager.aspx" mce_href="http://blogs.msdn.com/delay/archive/2007/06/11/script-combining-made-easy-overview-of-the-ajax-control-toolkit-s-toolkitscriptmanager.aspx"&gt;I blogged an overview of ToolkitScriptManager last week (including an explanation of what "script combining" is)&lt;/A&gt;. This post will build on that overview to discuss some of the changes to ToolkitScriptManager in the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=4923" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=4923"&gt;10618 release of the Toolkit&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The most obvious change is the addition of an optional new property: &lt;CODE&gt;CombineScriptsHandlerUrl&lt;/CODE&gt;. Left unset, ToolkitScriptManager works just like before; setting CombineScriptsHandlerUrl specifies the URL of an &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.ihttphandler.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.web.ihttphandler.aspx"&gt;IHttpHandler&lt;/A&gt; (feel free to use &lt;A href="http://msdn2.microsoft.com/en-us/library/ms366713.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms366713.aspx"&gt;@ WebHandler&lt;/A&gt; to implement it) that's used to serve the combined script files for that ToolkitScriptManager instance instead of piggybacking them on the host page itself. Implementing this handler is simple: just use the &lt;CODE&gt;CombineScriptsHandler.ashx&lt;/CODE&gt; file that's part of the SampleWebSite that comes with the Toolkit! :) If you look at how that handler works, the &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.ihttphandler.processrequest.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.web.ihttphandler.processrequest.aspx"&gt;ProcessRequest&lt;/A&gt; method simply calls through to the &lt;CODE&gt;ToolkitScriptManager.OutputCombinedScriptFile(HttpContext context)&lt;/CODE&gt; method which is public and static for exactly this purpose. OutputCombinedScriptFile does all the work of generating the combined script file and outputting it via the supplied HttpContext - in fact, this is the same method that ToolkitScriptManager now uses internally to output a piggybacked combined script file. Because adding a handler in this manner doesn't require modifying the server configuration, CombineScriptsHandlerUrl can also be used by people in hosted and/or partial trust scenarios.&lt;/P&gt;
&lt;P&gt;At the end of my previous post, I mentioned two tradeoffs that were part of switching from ScriptManager to ToolkitScriptManager. Both of those tradeoffs are addressed by the 10618 ToolkitScriptManager - plus one more I didn't know about then and another that's implicit:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Using CombineScriptsHandlerUrl incurs no unnecessary load on the server.&lt;/STRONG&gt; One of the tradeoffs of the piggyback method for generating combined script files is that it involves a little bit of extra processing as part of the host page's page lifecycle that's not strictly necessary for the purposes of generating the combined script file. ToolkitScriptManager manages the page lifecycle processing to minimize the impact of piggybacking, but can't eliminate it all. However, using CombineScriptsHandlerUrl with a dedicated IHttpHandler doesn't involve any such overhead and helps keep things as efficient and streamlined as possible. The host page doesn't get reinvoked and the dedicated IHttpHandler does no more than it needs to.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Using CombineScriptsHandlerUrl won't interfere with URL rewriting.&lt;/STRONG&gt; Customers using &lt;A href="http://msdn2.microsoft.com/en-us/library/ms972974.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms972974.aspx"&gt;URL rewriting&lt;/A&gt; with their web sites pointed out that the piggybacking approach to combined script generation might require them to revise their URL rewriting rules to account for the unexpected page requests with the special combined script request parameter. ToolkitScriptManager tries to be as easy to use as possible, so one of the nice things about setting the new CombineScriptsHandlerUrl property is that web site authors can choose whatever URL works best for them to be their combined script file handler, thereby avoiding conflict with existing URL rewriting rules.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Using CombineScriptsHandlerUrl makes it more likely that cached script files will be reused.&lt;/STRONG&gt; When piggybacking combined script URLs, the presence of the host page's base URL in the combined script URL means that any cached script files generated by page A will not be usable by page B (which has a different base URL). Of course, once the user's browser caches the combined script files for pages A and B, the cached versions will be used and there is no server impact - but page B won't benefit from page A's cached file even if the combined script files are otherwise identical. When pages A and B both use the same set of extenders and CombineScriptsHandlerUrl is specified, the combined script file URL generated by pages A and B will be identical (because the combined script file handler base URL will be the same for both) and therefore the combined script file cached by the user's browser for page A will be automatically used for page B as well. For web sites with common extender usage patterns (such as a &lt;A href="http://ajax.asp.net/ajaxtoolkit/TextBoxWatermark/TextBoxWatermark.aspx" mce_href="http://ajax.asp.net/ajaxtoolkit/TextBoxWatermark/TextBoxWatermark.aspx"&gt;TextBoxWatermark&lt;/A&gt;'d search box in the corner of every page), the caching benefits of CombineScriptsHandlerUrl could be significant.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;The URLs used to specify combined script files are considerably less verbose.&lt;/STRONG&gt; Rather than including the full script name for every script in the combined script file (often upwards of 20 or 30 characters), the hexadecimal representation of their &lt;A href="http://msdn2.microsoft.com/en-us/library/system.string.gethashcode.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.string.gethashcode.aspx"&gt;String.GetHashCode&lt;/A&gt; is used instead (8 or fewer characters). While the baseline combined script URL length has grown by a bit due to some other changes, by far the most significant source of URL length was the script names, so the new URLs are shorter and less likely to get long (even on pages with lots of extenders). This improvement applies whether CombineScriptsHandlerUrl is specified or not, so piggybacked URLs are shorter, too. Note: Because hash code collision is now possible (though &lt;EM&gt;extremely&lt;/EM&gt; unlikely), there's a bit of code to detect that scenario and throw an informative exception. (Just change either of the script names slightly to resolve the collision.) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A handful of other fixes and improvements were made to ToolkitScriptManager for the 10618 release. Notably:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The CurrentUICulture is now embedded in the combined script URL so that changing the browser's culture while viewing a site will properly update the culture of the site's extenders.&lt;/LI&gt;
&lt;LI&gt;ToolkitScriptManager's check for a script's eligibility to participate in script combining now includes a check for the &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webresourceattribute.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webresourceattribute.aspx"&gt;WebResource attribute&lt;/A&gt; which is one of the things that &lt;A href="http://ajax.asp.net/docs/mref/T_System_Web_Handlers_ScriptResourceHandler.aspx" mce_href="http://ajax.asp.net/docs/mref/T_System_Web_Handlers_ScriptResourceHandler.aspx"&gt;ASP.NET's ScriptResourceHandler&lt;/A&gt; requires in order to serve an embedded resource. Consequently, an assembly's embedded resources without a corresponding WebResource attribute are no longer eligible for script combining (without needing to use the ExcludeScripts to explicitly remove them). This makes ToolkitScriptManager's behavior more consistent with that of ScriptResourceHandler.&lt;/LI&gt;
&lt;LI&gt;The "magic" request parameter for the combined script file changed from "_scriptcombiner_" to "_TSM_HiddenField_"/"_TSM_CombinedScripts_". _TSM_CombinedScripts_ is simply a rename of _scriptcombiner_, while _TSM_HiddenField_ now specifies the &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.hiddenfield.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.hiddenfield.aspx"&gt;HiddenField&lt;/A&gt; that's used for tracking which scripts have already been loaded by the browser. This ID is implicitly available when piggybacking, but is not available in the CombineScriptsHandlerUrl case, so it has become part of the URL. For completeness, the new form of the combined script URL is now:&lt;BR&gt;&lt;CODE&gt;.../[Page.aspx|Handler.ashx]?_TSM_HiddenField_=HiddenFieldID&amp;amp;_TSM_CombinedScripts_=;Assembly1.dll Version=1:Culture:MVID1:ScriptName1Hash:ScriptName2Hash;Assembly2.dll Version=2:Culture:MVID2:ScriptName3Hash&lt;/CODE&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;If you're already using ToolkitScriptManager and want to start using CombineScriptsHandlerUrl, but don't want to have to modify a bunch of ASPX pages to add the new property, you can take advantage of the fact that ToolkitScriptManager is now decorated with the &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.ui.themeableattribute.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.web.ui.themeableattribute.aspx"&gt;Themeable attribute&lt;/A&gt; and can be customized by a .skin file as part of &lt;A href="http://msdn2.microsoft.com/en-us/library/ykzx33wh.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ykzx33wh.aspx"&gt;ASP.NET's Theme/Skin support&lt;/A&gt;. Adding CombineScriptsHandlerUrl to all the pages of the Toolkit's SampleWebSite was easy - I just added a &lt;CODE&gt;ToolkitScriptManager.skin&lt;/CODE&gt; file to the existing web site theme and used the code &lt;CODE&gt;&amp;lt;ajaxToolkit:ToolkitScriptManager runat="server" CombineScriptsHandlerUrl="~/CombineScriptsHandler.ashx" /&amp;gt;&lt;/CODE&gt; to set CombineScriptsHandlerUrl for the entire site.&lt;/P&gt;
&lt;P&gt;ToolkitScriptManager is a handy way to enhance a web site with the AJAX Control Toolkit and it's gotten even better with the 10618 release of the Toolkit. We think ToolkitScriptManager offers some pretty compelling enhancements and we use it for all the AJAX Control Toolkit's sample content. We encourage anyone who's interested to give ToolkitScriptManager a try and see how well it works for them. As always, if there are any problems, please let us know by posting a detailed description of the problem to the &lt;A href="http://forums.asp.net/1022.aspx" mce_href="http://forums.asp.net/1022.aspx"&gt;AJAX Control Toolkit support forum&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Happy script combining!!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3431899" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>Tweaks and improvements by popular demand [AJAX Control Toolkit update!]</title><link>http://blogs.msdn.com/delay/archive/2007/06/18/tweaks-and-improvements-by-popular-demand-ajax-control-toolkit-update.aspx</link><pubDate>Tue, 19 Jun 2007 03:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3394192</guid><dc:creator>Delay</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/delay/comments/3394192.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=3394192</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;A short while ago we made available the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=4923" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=4923"&gt;10618 release&lt;/A&gt; of the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;AJAX Control Toolkit&lt;/A&gt;. This release addresses a handful of user-impacting issues introduced by changes in the recent 10606 release and identified by the user community in the &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;support forum&lt;/A&gt; and &lt;A href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/List.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/List.aspx"&gt;online issue tracker&lt;/A&gt;. Significant changes always have the risk of introducing problems so we do our best to find and fix them all before releasing. But for things that manage to sneak through, a targeted follow-up release is often a good way to fix annoyances quickly.&lt;/P&gt;
&lt;P&gt;The release notes from the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;sample web site&lt;/A&gt; detail the improvements in the new release:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P style="MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;General fixes:&lt;/STRONG&gt; &lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0px"&gt;
&lt;LI&gt;Tabs: Resolved NamingContainer issues so that FindControl works as expected in Tabs.&lt;/LI&gt;
&lt;LI&gt;ToolkitScriptManager: Shorter combined script URLs and new HTTP handler support for generation of combined script files.&lt;/LI&gt;
&lt;LI&gt;Dependencies: Removed explicit reference to VsWebSite.Interop.dll and stdole.dll. They will not be automatically included in the web configuration files by Visual Studio.&lt;/LI&gt;
&lt;LI&gt;FilteredTextBox: Navigation, Control and Delete keys work fine in all browsers.&lt;/LI&gt;
&lt;LI&gt;Localization: Turkish, Dutch, and Traditional and Simplified Chinese language support added.&lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;As always, it's easy to &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;sample any of the controls right now&lt;/A&gt; (no install required). You can also &lt;A href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit" mce_href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit"&gt;browse the project web site&lt;/A&gt;, &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx"&gt;download the latest Toolkit&lt;/A&gt;, and start creating your own controls and/or contributing to the project!&lt;/P&gt;
&lt;P&gt;If you have any feedback, please share it with us on the &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;support forum&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;PS - Last week I &lt;A href="http://blogs.msdn.com/delay/archive/2007/06/11/script-combining-made-easy-overview-of-the-ajax-control-toolkit-s-toolkitscriptmanager.aspx" mce_href="http://blogs.msdn.com/delay/archive/2007/06/11/script-combining-made-easy-overview-of-the-ajax-control-toolkit-s-toolkitscriptmanager.aspx"&gt;blogged an overview of the ToolkitScriptManager&lt;/A&gt; introduced in the 10606 release. ToolkitScriptManager has gotten even better in this release, and I'll be writing more about it later this week!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3394192" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>Script combining made easy [Overview of the AJAX Control Toolkit's ToolkitScriptManager]</title><link>http://blogs.msdn.com/delay/archive/2007/06/11/script-combining-made-easy-overview-of-the-ajax-control-toolkit-s-toolkitscriptmanager.aspx</link><pubDate>Tue, 12 Jun 2007 01:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3237348</guid><dc:creator>Delay</dc:creator><slash:comments>15</slash:comments><comments>http://blogs.msdn.com/delay/comments/3237348.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=3237348</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;&lt;STRONG&gt;Introduction&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=1813" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=1813"&gt;10606 release&lt;/A&gt; of the &lt;A href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit" mce_href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit"&gt;AJAX Control Toolkit&lt;/A&gt; includes ToolkitScriptManager, a new class that derives from the &lt;A href="http://ajax.asp.net/docs/overview/ScriptManagerOverview.aspx" mce_href="http://ajax.asp.net/docs/overview/ScriptManagerOverview.aspx"&gt;ASP.NET AJAX ScriptManager&lt;/A&gt; and performs automatic script combining.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What is meant by "script combining" and why is it desirable?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://ajax.asp.net/docs/ClientReference/Sys.UI/BehaviorClass/default.aspx" mce_href="http://ajax.asp.net/docs/ClientReference/Sys.UI/BehaviorClass/default.aspx"&gt;ASP.NET AJAX Behaviors&lt;/A&gt; are typically implemented by JavaScript (JS) files that are downloaded by the browser as part of the web page's content/resources (like CSS files, images, etc.). Each JS file typically contains a single Behavior, so if a web page uses lots of Behaviors, it's going to download lots of Behavior JS files. The cost to download a single JS file is fairly minimal, but when there are many of them on a page, the serialized nature of Behaviors (later ones may depend on earlier ones and can't be loaded until the earlier ones have finished) means that it may take a bit of time for all the JS a page needs to download to the user's browser. The time in question is typically on the order of milliseconds, but every little bit helps when you're looking to give users the best possible experience!&lt;/P&gt;
&lt;P&gt;Script combining is beneficial because fewer JS files means fewer request/response operations by the browser - which translates directly into quicker page load times for users and less load on the web server. Furthermore, there will be less network traffic because the HTTP headers associated with each unnecessary request/response operation don't need to be transmitted (saving around 750 bytes for each combined script).&lt;/P&gt;
&lt;P&gt;At the extreme, one could combine all (~40) the Behaviors in the Toolkit into a single, monolithic JS file (either manually or as part of the build process) and always send that file to the browser. While there are certain benefits to this, we chose not to do so for two main reasons: 1) the ASP.NET AJAX framework the Toolkit builds upon is an object-oriented framework and it's beneficial to maintain the mental/physical separation that comes from keeping each behavior isolated and 2) any page that used any part of the Toolkit would be forced to download the entire set of scripts in the Toolkit.&lt;/P&gt;
&lt;P&gt;ToolkitScriptManager gives us the best of both worlds by combining exactly the relevant JS files used by each page into one file so the browser downloads only what's necessary for each page. ToolkitScriptManager's script combining is more than a simple concatenation of all the script files in the Toolkit; it's a dynamic merge of only the scripts that are actually being used by a page each time it's loaded by the browser. If a page has an &lt;A href="http://ajax.asp.net/docs/overview/UpdatePanelOverview.aspx" mce_href="http://ajax.asp.net/docs/overview/UpdatePanelOverview.aspx"&gt;ASP.NET AJAX UpdatePanel&lt;/A&gt; on it and additional scripts need to be sent as part of an async postback, then ToolkitScriptManager will automatically generate a combined script file containing only those scripts that the browser hasn't already downloaded.&lt;/P&gt;
&lt;P&gt;ToolkitScriptManager automatically compresses the combined script file if the browser indicates it supports compression - achieving slightly better compression in the process because most &lt;A href="http://computer.howstuffworks.com/file-compression.htm" mce_href="http://computer.howstuffworks.com/file-compression.htm"&gt;adaptive dictionary-based compression techniques&lt;/A&gt; (like HTTP's GZIP and Deflate) tend to compress data better in one chunk than in multiple chunks (because the dictionary doesn't keep getting reset). The combined script file is cached and reused by the browser just like the corresponding script files would have been if ToolkitScriptManager weren't being used.&lt;/P&gt;
&lt;P&gt;Basically, script combining effortlessly creates faster loading web pages - and happier users by extension!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How do I use it?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Simple: Just replace &lt;CODE&gt;&amp;lt;asp:ScriptManager ... /&amp;gt;&lt;/CODE&gt; with &lt;CODE&gt;&amp;lt;ajaxToolkit:ToolkitScriptManager ... /&amp;gt;&lt;/CODE&gt; in your ASPX page and you're done! (Of course, if you're not using the default namespaces "asp" and "ajaxToolkit", you'll need to substitute your own namespaces.) The scripts in the AJAX Control Toolkit are already enabled for combining, so it's really that easy!&lt;/P&gt;
&lt;P&gt;ToolkitScriptManager derives from ScriptManager, so it can be substituted trivially. Configuration-wise, it exposes a single new property beyond what ScriptManager already has: &lt;CODE&gt;bool CombineScripts&lt;/CODE&gt;. The default value of "true" means that scripts will be automatically combined - specifying the value "false" disables the combining. (Alternatively, just switch back to ScriptManager for the same result.)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How do I enable combining for my custom Behavior's scripts?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;As a security precaution to prevent malicious users from taking advantage of ToolkitScriptManager to access embedded resources from unrelated DLLs, the new assembly-level ScriptCombine attribute must be used to indicate that a particular assembly/script is allowed to take part in the script combining process. By default, none of the scripts in an assembly without the ScriptCombine attribute will take part in script combining. Adding the ScriptCombine attribute to an assembly indicates that all of its scripts can take part in script combining and ToolkitScriptManager will automatically include the relevant ones when generating a combined script file. For finer control over individual scripts in an assembly, the ScriptCombine attribute exposes an ExcludeScripts property and an IncludeScripts property - both are comma-delimited lists of individual script files. As stated, when neither property is specified, the default behavior is that all scripts are combinable. Once the IncludeScripts property is set, only the scripts explicitly specified by it are combinable. The ExcludeScripts property excludes any listed scripts from combining (whether or not IncludeScripts is set). Of course, most people will simply add the ScriptCombine attribute to their assembly and the default behavior does what they want. (As mentioned above, Toolkit scripts are already enabled for script combining.)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How do scripts actually get combined? [Technical]&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Script combining is a two-stage process.&lt;/P&gt;
&lt;P&gt;The first stage takes place during the normal &lt;A href="http://msdn2.microsoft.com/en-us/library/ms178472.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms178472.aspx"&gt;ASP.NET page lifecycle&lt;/A&gt; when ToolkitScriptManager overrides ScriptManager's &lt;A href="http://msdn2.microsoft.com/en-us/ds9cf97s" mce_href="http://msdn2.microsoft.com/en-us/ds9cf97s"&gt;OnLoad&lt;/A&gt; method to initialize its state and its &lt;A href="http://ajax.asp.net/docs/mref/M_System_Web_UI_ScriptManager_OnResolveScriptReference_1_d993b8f2.aspx" mce_href="http://ajax.asp.net/docs/mref/M_System_Web_UI_ScriptManager_OnResolveScriptReference_1_d993b8f2.aspx"&gt;OnResolveScriptReference&lt;/A&gt; method to find out when script references are being resolved. The initialization code in OnLoad consists of adding a &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.hiddenfield.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.hiddenfield.aspx"&gt;HiddenField&lt;/A&gt; to the page and using it to track which scripts have already been loaded by the browser. The handling of OnResolveScriptReferences is a little more involved: the script reference is checked for combinability (i.e., does the assembly's ScriptCombine attribute allow the script to take part in script combining) and the script reference is changed to point to the URL of a combined script file. In this manner, all scripts that are part of the same combined script file get the same URL and the ScriptManager class outputs that URL to the page exactly once. Notably, because scripts may have a strict ordering, the presence of an uncombinable script in the middle of combinable scripts will result in two combined script files being generated (the first consisting of the scripts coming before the uncombinable script and the second consisting of the scripts after it).&lt;/P&gt;
&lt;P&gt;The URL of the combined script file is currently of the form: &lt;CODE&gt;.../Page.aspx?_scriptcombiner_=;Assembly1.dll Version=1:MVID1:Script.Name.1.js:Script.Name.2.js;Assembly2.dll Version=2:MVID1:Script.Name.3.js&lt;/CODE&gt;. What this means is that the ASPX page itself is referenced with the special request parameter "_scriptcombiner_" and a semicolon-delimited list of assemblies with a colon-delimited list of the required scripts from each of them. The strong name of the assembly is used to avoid potential confusion if multiple versions of an assembly are present and the &lt;A href="http://msdn2.microsoft.com/en-us/library/system.reflection.module.moduleversionid.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.reflection.module.moduleversionid.aspx"&gt;ModuleVersionID (MVID)&lt;/A&gt; is used to ensure that any changes to the assembly itself automatically invalidate all combined script files that reference it. In this manner, recompiling one of the assemblies contributing to a combined script file will cause the new scripts to be downloaded by the browser next time the page is loaded.&lt;/P&gt;
&lt;P&gt;The second stage of script combining takes place when the page is referenced with the "_scriptcombiner_" request parameter. ToolkitScriptManager overrides &lt;A href="http://ajax.asp.net/docs/mref/M_System_Web_UI_ScriptManager_OnInit_1_533fc935.aspx" mce_href="http://ajax.asp.net/docs/mref/M_System_Web_UI_ScriptManager_OnInit_1_533fc935.aspx"&gt;OnInit&lt;/A&gt; (one of the first parts of the page lifecycle) and uses that opportunity to generate the combined script file based on the value of the request parameter, outputs the combined script file to the browser, and stops further processing of the page lifecycle. Of note, the cache settings of the combined script file are set to the same values that the individual script files would have had if ToolkitScriptManager weren't being used and the combined script file is automatically compressed according to the browser's wishes. Similarly, any localized script resources for a script file that is in the process of being combined are loaded and sent to the browser as part of the combined script file. After all combined scripts are output, ToolkitScriptManager appends a small bit of script to the end of the file to update the page's HiddenField with the scripts that have just been added. In this manner, any additional scripts added during an async postback are automatically tracked by the page and subsequent async postbacks will know exactly which scripts have already been loaded by the browser.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Why piggyback a request parameter on the same page instead of using an IHttpHandler? [Technical]&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;ScriptManager uses &lt;A href="http://ajax.asp.net/docs/mref/T_System_Web_Handlers_ScriptResourceHandler.aspx" mce_href="http://ajax.asp.net/docs/mref/T_System_Web_Handlers_ScriptResourceHandler.aspx"&gt;ScriptResourceHandler&lt;/A&gt; (an &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.ihttphandler.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.web.ihttphandler.aspx"&gt;IHttpHandler&lt;/A&gt;) to serve (uncombined) scripts, so it's natural to wonder why ToolkitScriptManager wouldn't do the same. The reason is that the AjaxControlToolkit DLL is often run in &lt;A href="http://msdn2.microsoft.com/en-us/library/wyts434y.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/wyts434y.aspx"&gt;partial trust&lt;/A&gt; scenarios where it couldn't add such a handler to the system itself - and because we don't want people to have to modify their web.config file just to enable script combining. By making use of the same page for serving combined script files, ToolkitScriptManager offers a seamless experience that's simple to configure, simple to manage, and that works even for folks who don't have control over the web server that's hosting their content.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Are there any tradeoffs when switching to ToolkitScriptManager?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;There are no significant tradeoffs that we know of, but there are a couple of implications it's good to be aware of. For one, the current combined script URL format is currently pretty verbose and can lead to unusually long URLs. While this hasn't been a problem so far, it will be easy to change the format in the future (with no impact to users) and we're already considering ways of doing so. Another thing to be aware of is that reusing the page to serve the combined script file means that there is some additional server processing that happens before/during the OnInit stage of the page lifecycle when processing a combined script file. (Though the additional work here is offset by the savings of not having to serve multiple JS files.) Again, this hasn't been an issue, but it's something to keep in mind if things behave differently after adding ToolkitScriptManager to a page.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;So just how risky is it to switch to ToolkitScriptManager?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;That's a loaded question [ :) ], but it's informative to note that &lt;STRONG&gt;all&lt;/STRONG&gt; AJAX Control Toolkit sample pages (including the sample web site, automated tests, manual tests, etc.) have been converted over to use ToolkitScriptManager with only one issue: The Slider's SliderBehavior.js script uses a fairly obscure feature enabled by the &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webresourceattribute.performsubstitution.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webresourceattribute.performsubstitution.aspx"&gt;PerformSubstitution&lt;/A&gt; property of the &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webresourceattribute.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webresourceattribute.aspx"&gt;WebResource attribute&lt;/A&gt; that allows &lt;CODE&gt;&amp;lt;%= WebResource/ScriptResource %&amp;gt;&lt;/CODE&gt; tags to be embedded in JS files and get resolved before the script is sent to the browser. This behavior isn't currently supported by ToolkitScriptManager (it will throw an informative Exception if it detects the presence of this construct), so the ExcludeScripts property of the ScriptCombine attribute on the AjaxControlToolkit DLL has been used to exclude the SliderBehavior.js file from being combined.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;ToolkitScriptManager works seamlessly in every page of the AJAX Control Toolkit, so we encourage folks to give it a try if they're interested in the benefits it offers! As always, if you encounter any problems, please let us know by posting a detailed description of the problem to the &lt;A href="http://forums.asp.net/1022.aspx" mce_href="http://forums.asp.net/1022.aspx"&gt;AJAX Control Toolkit support forum&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Happy script combining!!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3237348" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>Fixes and features by popular demand [AJAX Control Toolkit update!]</title><link>http://blogs.msdn.com/delay/archive/2007/06/06/fixes-and-features-by-popular-demand-ajax-control-toolkit-update.aspx</link><pubDate>Thu, 07 Jun 2007 03:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3128916</guid><dc:creator>Delay</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/delay/comments/3128916.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=3128916</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;Earlier today we made available the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=1813" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=1813"&gt;10606 release&lt;/A&gt; of the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;AJAX Control Toolkit&lt;/A&gt;. This release focused on addressing many of the most popular bugs and work items identified by the user community in the &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;support forum&lt;/A&gt; and &lt;A href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/List.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/List.aspx"&gt;online issue tracker&lt;/A&gt;. We've also added some new functionality to the Toolkit that really improves the user experience for page authors and consumers alike! &lt;/P&gt;
&lt;P&gt;The release notes from the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;sample web site&lt;/A&gt; detail the improvements: &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P style="MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;General fixes:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0px"&gt;
&lt;LI&gt;Design Mode support: 
&lt;UL&gt;
&lt;LI&gt;Tabs designer: Tabs control can be configured in the designer.&lt;/LI&gt;
&lt;LI&gt;PageMethods in code-behind: Extenders that consume web services can now have PageMethods added to code-behind automatically when using the designer. A repair mode fixes existing PageMethods with incorrect signatures.&lt;/LI&gt;
&lt;LI&gt;Control icons: Toolkit controls have more meaningful icons that show up in the Visual Studio Toolbox when the Toolkit DLL is added to it.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Dynamic context: Toolkit extenders that consume web services can now pass additional context beyond what is used by the default web service signature.&lt;/LI&gt;
&lt;LI&gt;Validators and Toolkit extenders: Extenders that target TextBoxes with ASP.NET validators attached to them no longer interfere with the validation process.&lt;/LI&gt;
&lt;LI&gt;Animation support: Toolkit controls that build on top of PopupBehavior now have generic animation support built in.&lt;/LI&gt;
&lt;LI&gt;Script combiner: When the ToolkitScriptManager is used, Toolkit scripts are downloaded in a single, common JavaScript file instead of multiple files. This allows for faster downloads and fewer roundtrips. The combined file is generated dynamically depending on the controls being used on the page. All Toolkit sample pages use this new functionality.&lt;/LI&gt;
&lt;LI&gt;Events support: Toolkit controls fire events for core actions. This is in part to make plugging in animation easier and also to allow users to hook into the various Toolkit controls' behaviors and perform custom actions.&lt;/LI&gt;
&lt;LI&gt;Bug fixes: This release includes fixes for over 120 issues tracked in the Toolkit Issue Tracker representing over 750 user votes.&lt;/LI&gt;
&lt;LI&gt;Accessibility fixes: Slider and AutoComplete have support for high contrast and some controls like AutoComplete, NumericUpDown, CascadingDropDown and DynamicPopulate which issue XmlHttpRequests update a hidden DOM element to automatically refresh the JAWS screen buffer to reflect new data.&lt;/LI&gt;&lt;/UL&gt;
&lt;P style="MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;Control updates:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0px"&gt;
&lt;LI&gt;MaskedEdit extender works well with the Calendar extender and the ValidatorCallout extender when targeting the same TextBox.&lt;/LI&gt;
&lt;LI&gt;AutoComplete supports scrolling in the fly-out, multi-word, first word default selection and it has animation built into it.&lt;/LI&gt;
&lt;LI&gt;ModalPopup fix for most common scenarios involving absolute and relative positioning.&lt;/LI&gt;
&lt;LI&gt;NumericUpDown has new Minimum and Maximum properties to restrict the range of numbers allowed.&lt;/LI&gt;&lt;/UL&gt;
&lt;P style="MARGIN-BOTTOM: 0px"&gt;&lt;STRONG&gt;Visual Studio Codename "Orcas" support:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0px"&gt;
&lt;LI&gt;The Toolkit DLL works with ASP.NET AJAX Orcas Beta 1 DLLs and there are no breaking changes.&lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;For more details about the Tabs designer, web service design-time enhancements, and script combining (along with some pretty pictures!), check out &lt;A href="http://blogs.msdn.com/sburke/archive/2007/06/07/updated-toolkit-release-now-available.aspx"&gt;Shawn Burke's release announcement&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As always, it's easy to &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;sample any of the controls right now&lt;/A&gt; (no install required). You can also &lt;A href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit" mce_href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit"&gt;browse the project web site&lt;/A&gt;, &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx"&gt;download the latest Toolkit&lt;/A&gt;, and start creating your own controls and/or contributing to the project!&lt;/P&gt;
&lt;P&gt;If you have any feedback, please share it with us on the &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;support forum&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;PS - The &lt;A href="http://ajax.asp.net/ajaxtoolkit/"&gt;public sample site&lt;/A&gt; hasn't been deployed quite yet (real soon now!), but &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=1813"&gt;the new Toolkit bits are up on CodePlex&lt;/A&gt;, so feel free to get them and start using them!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3128916" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>Toolkit patching made easy [Announcing the AJAX Control Toolkit Patch Utility]</title><link>http://blogs.msdn.com/delay/archive/2007/04/13/toolkit-patching-made-easy-announcing-the-ajax-control-toolkit-patch-utility.aspx</link><pubDate>Fri, 13 Apr 2007 21:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2118296</guid><dc:creator>Delay</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/delay/comments/2118296.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=2118296</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;We've just made available the &lt;A href="http://ajax.asp.net/ajaxtoolkit/patchtool/" mce_href="http://ajax.asp.net/ajaxtoolkit/patchtool/"&gt;AJAX Control Toolkit Patch Utility&lt;/A&gt;, a simple &lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa497348.aspx" mce_href="http://msdn2.microsoft.com/en-us/netframework/aa497348.aspx"&gt;ClickOnce&lt;/A&gt; application that makes it easy for *anyone* to contribute fixes to the &lt;A href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit" mce_href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit"&gt;AJAX Control Toolkit&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Background&lt;/STRONG&gt;: We have a &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;very active user community&lt;/A&gt; that's using the Toolkit in lots of ways we never imagined. Sometimes people come up with better ways of doing things and occasionally they bump into a new issue we didn't know about. When questions show up on the support forum, it's great to see someone follow up with a change to the Toolkit that resolves the issue. These community contributions are fantastic - we always try to add a pointer to the associated &lt;A href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/List.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/List.aspx"&gt;work item for the issue&lt;/A&gt; so we won't forget about it. However, there is a fair amount of effort involved in merging such fixes into the Development branch of the source code and that effort can delay the incorporation of proposed changes. The new Patch Utility is designed to streamline the process so it will be easier for people to contribute fixes and easier for the Toolkit team to incorporate them into the next release of the Toolkit. By making the process simpler and enabling the inclusion of more community fixes, everyone benefits by having a better Toolkit that they're less likely to have trouble with!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How patching works&lt;/STRONG&gt;: The &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Wiki/View.aspx?title=PatchUtility" mce_href="http://www.codeplex.com/AtlasControlToolkit/Wiki/View.aspx?title=PatchUtility"&gt;AJAX Control Toolkit Patch Utility Guide&lt;/A&gt; contains all the details - along with screenshots that walk through everything. The process itself is pretty simple. Once a Toolkit user identifies a problem, he/she runs the Patch Utility in "Create a Patch" mode which walks through the steps of downloading the latest Development branch of source code for the Toolkit. The user makes whatever changes to the Toolkit are necessary to fix the problem and alters the automated test cases to verify the new behavior. Then the user runs the Patch Utility again in "Prepare Patch for Submission" mode which collects the changes that were made, gives the user an opportunity to review them in a file differencing tool, and generates a compact ZIP archive containing the user's patch. The user attaches the ZIP file to the existing work item that corresponds to the issue he/she fixed and that's it!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What happens next&lt;/STRONG&gt;: On the back end, we have a process running which periodically looks at outstanding work items for new patches. When a new patch is found, a set of "check-in-able" changes is automatically created for that patch. What that means for the Toolkit team is that it's easy for any of us to review the patch, merge it with the very latest version of code in the Development branch, test it on our machines, and check the patch in for inclusion with the next Toolkit release!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What changes make good patches&lt;/STRONG&gt;: Bug fixes and minor enhancements to existing code make great patches because the overall amount of change is small and the effect of the change is fairly self-contained and easily testable. On the other hand, broad changes like the addition of an entirely new control or the refactoring of a significant chunk of code would not make good patches due to the widespread effects of such changes (we have a different process in place for such things; email us if you want to add a new control).&lt;/P&gt;
&lt;P&gt;The Patch Utility enables anyone to make fixes to the Toolkit - if you're a Toolkit user and you've got a fix floating around on your machine, please &lt;A href="http://ajax.asp.net/ajaxtoolkit/patchtool/" mce_href="http://ajax.asp.net/ajaxtoolkit/patchtool/"&gt;use the AJAX Control Toolkit Patch Utility&lt;/A&gt; to submit it! And if you have any suggestions for things we can improve please &lt;A href="mailto:ajaxtk@microsoft.com" mce_href="mailto:ajaxtk@microsoft.com"&gt;send your feedback to us&lt;/A&gt;!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2118296" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>AutoComplete++ [How to: Create a multi-word auto-complete text box]</title><link>http://blogs.msdn.com/delay/archive/2007/03/30/autocomplete-how-to-create-a-multi-word-auto-complete-text-box.aspx</link><pubDate>Sat, 31 Mar 2007 02:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1996432</guid><dc:creator>Delay</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/delay/comments/1996432.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=1996432</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;By default, the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;AJAX Control Toolkit's&lt;/A&gt; &lt;A href="http://ajax.asp.net/ajaxtoolkit/AutoComplete/AutoComplete.aspx" mce_href="http://ajax.asp.net/ajaxtoolkit/AutoComplete/AutoComplete.aspx"&gt;AutoComplete extender&lt;/A&gt; doesn't have a notion of "words" and will try to auto-complete whatever text is currently in the text box, treating what's there as a single "word". One request that has come up a few times was for the ability to &lt;A href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/View.aspx?WorkItemId=8807" mce_href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/View.aspx?WorkItemId=8807"&gt;auto-complete multiple words individually&lt;/A&gt;. According to the comments of that work item, it looks like &lt;A href="http://tshak.net/cs/blogs/tshak/archive/2007/03/10/20.aspx" mce_href="http://tshak.net/cs/blogs/tshak/archive/2007/03/10/20.aspx"&gt;someone's made a set of proposed changes to do just that&lt;/A&gt;! It's great to have such an involved user community!! (Please note: The work item comments suggest those changes don't work in all browsers.)&lt;/P&gt;
&lt;P&gt;One thing I'd been meaning to do was write a quick sample of how to get reasonably good multiple-word auto-complete &lt;EM&gt;without making any modifications to the released AutoComplete extender&lt;/EM&gt;. In other words, you can use the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx"&gt;latest official Toolkit release&lt;/A&gt; (10301 in this case) and get some nice multi-word completion today. The key observation here is that the Web Service used to provide the list of candidate words has all the information it needs to do multi-word completion as well:&lt;/P&gt;
&lt;P&gt;&lt;IMG height=272 alt="Multi-word auto-complete example" src="http://blogs.msdn.com/delay/attachment/1996432.ashx" width=357&gt;&lt;/P&gt;
&lt;P&gt;The complete code for the sample page is included below for anyone to look at or modify for their purposes. A few notes about the code:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The example was written to be simple, not efficient. The goal is to demonstrate the idea as plainly as possible, so there's no focus on performance.&lt;/LI&gt;
&lt;LI&gt;The code works by auto-completing the last "word" of input and then populates the list of candidates with the resulting words &lt;EM&gt;and the preceding text&lt;/EM&gt;.&lt;/LI&gt;
&lt;LI&gt;All comparisons are case-insensitive so the user can type however they want.&lt;/LI&gt;
&lt;LI&gt;In a real-world application, the list of candidate words would probably be retrieved from a helper function, a database, etc..&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Here's the complete ASPX file:&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; FONT-FAMILY: Monospace; BACKGROUND-COLOR: #dddddd"&gt;&amp;lt;%&lt;SPAN style="COLOR: blue"&gt;@&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Page&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Language&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="C#"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; %&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;@&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Register&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Assembly&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="AjaxControlToolkit"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Namespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="AjaxControlToolkit"&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;TagPrefix&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="ajaxToolkit"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; %&amp;gt;&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;DOCTYPE&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;html&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;PUBLIC&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;script&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="server"&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[System.Web.Services.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;WebMethod&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[System.Web.Script.Services.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ScriptMethod&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;[] GetCompletionList(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; prefixText, &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; count)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Fetch and sort the list of available completion words&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;[] allWords = &lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;"AJAX Control Toolkit AutoComplete auto automatic"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.Split(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;' '&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Array&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.Sort(allWords);&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Split input into completed words and prefix characters for the current word&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Match on the current word and return candidate list including completed words&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Ex: "he" -&amp;gt; "" and "he..."&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Ex: "hello there th" -&amp;gt; "hello there " and "th..."&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; completedWords = &lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; prefixChars = prefixText;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; lastSpace = prefixText.LastIndexOf(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;' '&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; (-1 != lastSpace)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;completedWords = prefixText.Substring(0, lastSpace + 1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prefixChars = prefixText.Substring(lastSpace + 1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Create the completion list by searching for prefix matches&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Collections.Generic.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;gt; completionList =&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; System.Collections.Generic.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; word &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; allWords)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; (word.ToUpperInvariant().StartsWith(prefixChars.ToUpperInvariant()))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;completionList.Add(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.Concat(completedWords, word));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Return the completion list&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; completionList.ToArray();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;script&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;html&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="http://www.w3.org/1999/xhtml"&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;head&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="server"&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;title&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;Multi-Word Auto-Complete&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;title&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;head&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;body&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;form&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="form1"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="server"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;onsubmit&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="return false;"&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;asp&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;ScriptManager&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="ScriptManager1"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="server"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;asp&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="TextBox1"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="server"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;Width&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="300"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;ajaxToolkit&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;:&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;AutoCompleteExtender&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="AutoCompleteExtender1"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="server"&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;TargetControlID&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="TextBox1"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;ServiceMethod&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="GetCompletionList"&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;MinimumPrefixLength&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="0"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;form&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;body&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;html&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1996432" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/delay/attachment/1996432.ashx" length="25623" type="image/x-png" /><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>Toolkit talk two-fer! [Spoke at the ASP.NET Connections conference]</title><link>http://blogs.msdn.com/delay/archive/2007/03/26/toolkit-talk-two-fer-spoke-at-the-asp-net-connections-conference.aspx</link><pubDate>Tue, 27 Mar 2007 01:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1955574</guid><dc:creator>Delay</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/delay/comments/1955574.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=1955574</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;Earlier today I presented two talks about the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;AJAX Control Toolkit&lt;/A&gt; at the &lt;A href="http://www.devconnections.com/shows/SP2007ASP/default.asp?s=90" mce_href="http://www.devconnections.com/shows/SP2007ASP/default.asp?s=90"&gt;ASP.NET Connections conference&lt;/A&gt; in Orlando, Florida: &lt;STRONG&gt;AMS305: ASP.NET AJAX Control Toolkit: See How to Take Advantage of the ASP.NET AJAX Control Toolkit&lt;/STRONG&gt; and &lt;STRONG&gt;AMS304: ASP.NET AJAX Control Toolkit Unleashed: Creating Rich Client-Side Controls and Components&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;The content for these talks was based on stuff I've previously presented at &lt;A href="http://blogs.msdn.com/delay/archive/2007/02/08/toolkit-talk-take-two-spoke-at-the-techready4-conference.aspx" mce_href="http://blogs.msdn.com/delay/archive/2007/02/08/toolkit-talk-take-two-spoke-at-the-techready4-conference.aspx"&gt;TechReady4 in February&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/delay/archive/2006/11/07/talked-toolkit-spoke-at-the-asp-net-connections-conference.aspx" mce_href="http://blogs.msdn.com/delay/archive/2006/11/07/talked-toolkit-spoke-at-the-asp-net-connections-conference.aspx"&gt;ASP.NET Connections in November of last year&lt;/A&gt;. However, this time around I was able to go into quite a bit more detail because I had over twice as much time to speak and do demos. The introductory &lt;STRONG&gt;AMS305&lt;/STRONG&gt; talk took the ImageFlix sample I've used before and expanded on it to demonstrate the Toolkit's new support for ASP.NET Skins/Themes and advanced animations followed by a quick walkthrough of what to do when things don't work like you'd expect (demonstrated here by adding a DropShadow to the popup panel). The more advanced &lt;STRONG&gt;AMS304&lt;/STRONG&gt; talk used an updated FontSize extender demonstration like the one that was demonstrated at the November ASP.NET Connections and included an overview of working with the Toolkit project, highlighting the automated testing framework and new localization support. Overall, there are about 15 completely new slides with fresh content, covering topics such as localization, automated testing, and more.&lt;/P&gt;
&lt;P&gt;I've attached the slide decks and the demo content for both talks to this post so that anyone who's interested can have a look at the slides or play around with the demos.&lt;/P&gt;
&lt;P&gt;I hope those of you who attended today enjoyed the talk and learned more about the Toolkit - it was great to have an opportunity to spend time with you!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1955574" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/delay/attachment/1955574.ashx" length="621425" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>Lost (Sk)in Translation [AJAX Control Toolkit update!]</title><link>http://blogs.msdn.com/delay/archive/2007/03/02/lost-sk-in-translation-ajax-control-toolkit-update.aspx</link><pubDate>Fri, 02 Mar 2007 15:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1787179</guid><dc:creator>Delay</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/delay/comments/1787179.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=1787179</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;A short while ago we made available the &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=1425" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=1425"&gt;10301 release&lt;/A&gt; of the &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;AJAX Control Toolkit&lt;/A&gt;. With this release, we managed to add some great core functionality, a couple of new controls, and a bunch of bug fixes for popular issues (as identified by our user community in the &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;support forum&lt;/A&gt; and &lt;A href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/List.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/WorkItem/List.aspx"&gt;online issue tracker&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;The 10301 release includes two new controls:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://ajax.asp.net/ajaxtoolkit/ListSearch/ListSearch.aspx" mce_href="http://ajax.asp.net/ajaxtoolkit/ListSearch/ListSearch.aspx"&gt;ListSearch&lt;/A&gt; (by contributor &lt;A href="http://damianblog.com/" mce_href="http://damianblog.com/"&gt;Damian Mehers&lt;/A&gt;) - A handy enhancement to ListBox/DropDownList controls that allows the user to select items by typing the first few characters&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://ajax.asp.net/ajaxtoolkit/SlideShow/SlideShow.aspx" mce_href="http://ajax.asp.net/ajaxtoolkit/SlideShow/SlideShow.aspx"&gt;SlideShow&lt;/A&gt; (by our own Kirti) - A visually pleasing slide show of automatically sized images and captions with optional automatic looping or manual control&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;We also managed to add three pieces of core functionality that users have been asking for:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Localization support - The Toolkit now has an infrastructure for localizing the text in JavaScript files using the standard &lt;A href="http://ajax.asp.net/docs/tutorials/EmbedClientResources.aspx" mce_href="http://ajax.asp.net/docs/tutorials/EmbedClientResources.aspx"&gt;ASP.NET/AJAX support for resource files&lt;/A&gt;. There are placeholder files for the following 14 languages: Arabic, German, English, Spanish, French, Hebrew, Hindi, Italian, Japanese, Korean, Portuguese, Russian, Chinese (Simplified), and Chinese (Traditional). Complete localization of all strings hasn't been done yet, but our most popular request by far is for the string "Today:" at the bottom of the Calendar's popup - and that has already been localized to all of the above languages. Just set your system/browser's language settings to one of the supported languages and visit the &lt;A href="http://ajax.asp.net/ajaxtoolkit/Calendar/Calendar.aspx" mce_href="http://ajax.asp.net/ajaxtoolkit/Calendar/Calendar.aspx"&gt;Calendar sample page&lt;/A&gt; for a demonstration.&lt;/LI&gt;
&lt;LI&gt;JavaScript comment/whitespace stripping - People are always interested in keeping the download size of their pages as low as possible, and the Toolkit goes the extra mile to help. When compiled in "Release" mode (as the official releases on CodePlex always are), all of the JavaScript files in the Toolkit automatically have all comments and unnecessary whitespace removed. Ted, the author of this functionality, was careful to adhere to the &lt;A href="http://www.ecma-international.org/publications/standards/Ecma-262.htm" mce_href="http://www.ecma-international.org/publications/standards/Ecma-262.htm"&gt;ECMA-262 ECMAScript Language Specification&lt;/A&gt;, so the modifications are both safe and effective.&lt;/LI&gt;
&lt;LI&gt;ASP.NET Theme/Skin support - Central control is usually best, so it's nice to be able to use &lt;A href="http://msdn2.microsoft.com/en-us/library/ykzx33wh(VS.80).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ykzx33wh(VS.80).aspx"&gt;ASP.NET's theme/skin support&lt;/A&gt; to specify properties for controls across an entire web site in one central location. Toolkit controls didn't used to be skinnable (i.e., support the SkinID property) but now they are, so go ahead and start skinning your site. In fact, we used this new ability to style the CollapsiblePanels that we use for descriptions/properties/known issues on every sample page.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;And, with the help of our contributors, we fixed a bunch of bugs along the way... &lt;/P&gt;
&lt;P&gt;We hope you like the new release!!&lt;/P&gt;
&lt;P&gt;Recall that you can &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;sample any of the controls right now&lt;/A&gt; (no install required). You can also &lt;A href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit" mce_href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit"&gt;browse the project web site&lt;/A&gt;, &lt;A href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx" mce_href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx"&gt;download the latest Toolkit&lt;/A&gt;, and start creating your own controls and/or contributing to the project!&lt;/P&gt;
&lt;P&gt;If you have any feedback, please share it with us on the &lt;A href="http://forums.asp.net/1022/ShowForum.aspx" mce_href="http://forums.asp.net/1022/ShowForum.aspx"&gt;support forum&lt;/A&gt; (or &lt;A href="http://blogs.msdn.com/delay/contact.aspx" mce_href="http://blogs.msdn.com/delay/contact.aspx"&gt;email me&lt;/A&gt;)!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1787179" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item><item><title>Toolkit talk, take two [Spoke at the TechReady4 conference]</title><link>http://blogs.msdn.com/delay/archive/2007/02/08/toolkit-talk-take-two-spoke-at-the-techready4-conference.aspx</link><pubDate>Fri, 09 Feb 2007 06:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1631939</guid><dc:creator>Delay</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/delay/comments/1631939.aspx</comments><wfw:commentRss>http://blogs.msdn.com/delay/commentrss.aspx?PostID=1631939</wfw:commentRss><description>&lt;DIV class=delay&gt;
&lt;P&gt;Earlier today I presented the &lt;STRONG&gt;DEV304: ASP.NET AJAX Control Toolkit Unleashed: Creating Rich Client-Side Controls and Components&lt;/STRONG&gt; session at Microsoft's TechReady4 conference here in Seattle. TechReady is a Microsoft-only conference that non-Redmond-based employees attend to get an opportunity to meet with product team members (typically Redmond-based) and catch up on all the new technology each year. Most of the session content is Microsoft-only, but because the presentation I gave today had no private information, I'm posting the (sanitized) slide deck and demos here for everyone to use (note: the attachment is at the bottom of this post).&lt;/P&gt;
&lt;P&gt;If you saw the content for my &lt;A href="http://blogs.msdn.com/delay/archive/2006/11/07/talked-toolkit-spoke-at-the-asp-net-connections-conference.aspx" mce_href="http://blogs.msdn.com/delay/archive/2006/11/07/talked-toolkit-spoke-at-the-asp-net-connections-conference.aspx"&gt;ASP.NET Connections talk a few months ago&lt;/A&gt;, the slide content for today's TechReady4 talk was very similar. The first demo was identical and the second (new) demo was just a quick overview of &lt;A href="http://ajax.asp.net/ajaxtoolkit/" mce_href="http://ajax.asp.net/ajaxtoolkit/"&gt;the sample web site that comes with the Toolkit&lt;/A&gt;. However, the third demo was completely new and demonstrated how to encapsulate existing script into a new Toolkit control. For demonstration purposes, I took a simple web page with a &lt;A href="http://msdn2.microsoft.com/en-us/asp.net/bb187358.aspx" mce_href="http://msdn2.microsoft.com/en-us/asp.net/bb187358.aspx"&gt;WPF/E (February CTP)&lt;/A&gt; control (the use of which requires two &amp;lt;script&amp;gt;/src tags and a &amp;lt;script&amp;gt;/code block) and showed how to wrap that all into a single "one-liner" Toolkit component which can be more easily used/maintained/added to a page. Those of you who are paying close attention will realize that &lt;A href="http://blogs.msdn.com/sburke/archive/2006/12/05/toolkit-extender-for-creating-wpf-e-components.aspx" mce_href="http://blogs.msdn.com/sburke/archive/2006/12/05/toolkit-extender-for-creating-wpf-e-components.aspx"&gt;I took my inspiration from a similar effort by my manager, Shawn Burke&lt;/A&gt; - though I wrote all my demo code from scratch so I'd be more familiar with it. :) The final result is a pretty handy way of handling WPF/E controls and folks are welcome to use it however they want! &lt;/P&gt;
&lt;P&gt;I hope those of you who attended today enjoyed the talk and learned more about the Toolkit - it was great to have an opportunity to meet with you!&lt;/P&gt;
&lt;P&gt;PS - We're always looking for more contributors and additional control ideas, so please &lt;A href="http://blogs.msdn.com/delay/contact.aspx" mce_href="http://blogs.msdn.com/delay/contact.aspx"&gt;let me know&lt;/A&gt; if you want to contribute!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1631939" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/delay/attachment/1631939.ashx" length="519074" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/delay/archive/tags/AJAX+Control+Toolkit/default.aspx">AJAX Control Toolkit</category></item></channel></rss>