I’m happy to announce the release of the September 2011 Ajax
Control Toolkit. This release has several important new features including: Date ranges – When using the Calendar extender, you can specify a start and end date and a
user can pick only those dates which fall within the specified range. This was the fourth top-voted feature request for the Ajax
Control Toolkit at CodePlex. Twitter
Control – You can use the new Twitter
control to display recent tweets associated with a particular Twitter
user or tweets which match a search query. Gravatar
Control – You can use the new Gravatar
control to display a unique image for each
user of your website. Users can upload custom images to the Gravatar.com website or the Gravatar
control can display a unique, auto-generated, image for a
user. You can download this release this very minute by visiting CodePlex: http://AjaxControlToolkit.CodePlex.com Alternatively, you can execute the following command from the Visual Studio NuGet console: Improvements to the Ajax
Control Toolkit Calendar
Control The Ajax
Control Toolkit Calendar extender
control is one of the most heavily used controls from the Ajax
Control Toolkit. The developers on the Superexpert team spent the last sprint focusing on improving this
control. There are three important changes that we made to the Calendar control: we added support for date ranges, we added support for highlighting today’s date, and we made fixes to several bugs related to time zones and daylight savings. Using Calendar Date Ranges One of the top-voted feature requests for the Ajax
Control Toolkit was a request to add support for date ranges to the Calendar
control (this was the fourth most voted feature request at CodePlex). With the latest release of the Ajax
Control Toolkit, the Calendar extender now supports date ranges. For example, the following page illustrates how you can create a popup calendar which allows a
user only to pick dates between March 2, 2009 and May 16, 2009. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CalendarDateRange.aspx.cs" Inherits="WebApplication1.CalendarDateRange" %>
<%@ Register TagPrefix="asp" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit" %>
<html>
<head runat="server">
<title>Calendar Date Range</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ToolkitScriptManager
ID="tsm"
runat="server" />
<asp:TextBox
ID="txtHotelReservationDate"
runat="server" />
<asp:CalendarExtender
ID="Calendar1"
TargetControlID="txtHotelReservationDate"
StartDate="3/2/2009"
EndDate="5/16/2009"
SelectedDate="3/2/2009"
runat="server" />
</form>
</body>
</html>
This page contains three controls: an Ajax
Control Toolkit ToolkitScriptManager
control, a standard ASP.NET TextBox
control, and an Ajax
Control Toolkit CalendarExtender
control. Notice that the Calendar
control includes StartDate and EndDate properties which restrict the range of valid dates.
The Calendar
control shows days, months, and years outside of the valid range as struck out. You cannot select days, months, or years which fall outside of the range. The following video illustrates interacting with the new date range feature:
If you want to experiment with a live version of the Ajax
Control Toolkit Calendar extender
control then you can visit the Calendar Sample Page at the Ajax
Control Toolkit Sample Site.
Highlighted Today’s Date
Another highly requested feature for the Calendar
control was support for highlighting today’s date. The Calendar
control now highlights the user’s current date regardless of the user’s time zone.
Fixes to Time Zone and Daylight Savings Time Bugs
We fixed several significant Calendar extender bugs related to time zones and daylight savings time. For example, previously, when you set the Calendar control’s SelectedDate property to the value 1/1/2007 then the selected data would appear as 12/31/2006 or 1/1/2007 or 1/2/2007 depending on the server time zone.
For example, if your server time zone was set to Samoa (UTC-11:00), then setting SelectedDate=”1/1/2007” would result in “12/31/2006” being selected in the Calendar. Users of the Calendar extender
control found this behavior confusing.
After careful consideration, we decided to change the Calendar extender so that it interprets all dates as UTC dates. In other words, if you set StartDate=”1/1/2007” then the Calendar extender parses the date as 1/1/2007 UTC instead of parsing the date according to the server time zone.
By interpreting all dates as UTC dates, we avoid all of the reported issues with the SelectedDate property showing the wrong date. Furthermore, when you set the StartDate and EndDate properties, you know that the same StartDate and EndDate will be selected regardless of the time zone associated with the server or associated with the browser. The date 1/1/2007 will always be the date 1/1/2007.
The New Twitter
Control
This release of the Ajax
Control Toolkit introduces a new twitter
control. You can use the Twitter
control to display recent tweets associated with a particular twitter
user. You also can use this
control to show the results of a twitter search.
The following page illustrates how you can use the Twitter
control to display recent tweets made by Scott Hanselman:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TwitterProfile.aspx.cs" Inherits="WebApplication1.TwitterProfile" %>
<%@ Register TagPrefix="asp" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit" %>
<html >
<head runat="server">
<title>Twitter Profile</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ToolkitScriptManager
ID="tsm"
runat="server" />
<asp:Twitter
ID="Twitter1"
ScreenName="shanselman"
runat="server" />
</form>
</body>
</html>
This page includes two Ajax
Control Toolkit controls: the ToolkitScriptManager
control and the Twitter
control. The Twitter
control is set to display tweets from Scott Hanselman (shanselman):
You also can use the Twitter
control to display the results of a search query. For example, the following page displays all recent tweets related to the Ajax
Control Toolkit:
Twitter limits the number of times that you can interact with their API in an hour. Twitter recommends that you cache results on the server (https://dev.twitter.com/docs/rate-limiting). By default, the Twitter
control caches results on the server for a duration of 5 minutes. You can modify the cache duration by assigning a value (in seconds) to the Twitter
control's CacheDuration property.
The Twitter
control wraps a standard ASP.NET ListView
control. You can customize the appearance of the Twitter
control by modifying its LayoutTemplate, StatusTemplate, AlternatingStatusTemplate, and EmptyDataTemplate.
To learn more about the new Twitter
control, visit the live Twitter Sample Page.
The New Gravatar
Control
The September 2011 release of the Ajax
Control Toolkit also includes a new Gravatar
control. This
control makes it easy to display a unique image for each
user of your website.
A Gravatar is associated with an email address. You can visit Gravatar.com and upload an image and associate the image with your email address. That way, every website which uses Gravatars (such as the www.ASP.NET website) will display your image next to your name.
For example, I visited the Gravatar.com website and associated an image of a Koala Bear with the email address
[email protected]. The following page illustrates how you can use the Gravatar
control to display the Gravatar image associated with the
[email protected] email address:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GravatarDemo.aspx.cs" Inherits="WebApplication1.GravatarDemo" %>
<%@ Register TagPrefix="asp" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Gravatar Demo</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ToolkitScriptManager
ID="tsm"
runat="server" />
<asp:Gravatar
ID="Gravatar1"
Email="
[email protected]"
runat="server" />
</form>
</body>
</html>
The page above simply displays the Gravatar image associated with the
[email protected] email address:
If a
user has not uploaded an image to Gravatar.com then you can auto-generate a unique image for the
user from the
user email address. The Gravatar
control supports four types of auto-generated images:
Identicon -- A different geometric pattern is generated for each unrecognized email.
MonsterId -- A different image of a monster is generated for each unrecognized email.
Wavatar -- A different image of a face is generated for each unrecognized email.
Retro -- A different 8-bit arcade-style face is generated for each unrecognized email.
For example, there is no Gravatar image associated with the email address
[email protected]. The following page displays an auto-generated MonsterId for this email address:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GravatarMonster.aspx.cs" Inherits="WebApplication1.GravatarMonster" %>
<%@ Register TagPrefix="asp" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Gravatar Monster</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ToolkitScriptManager
ID="tsm"
runat="server" />
<asp:Gravatar
ID="Gravatar1"
Email="
[email protected]"
DefaultImageBehavior="MonsterId"
runat="server" />
</form>
</body>
</html>
The page above generates the following image automatically from the supplied email address:
To learn more about the properties of the new Gravatar
control, visit the live Gravatar Sample Page.
ASP.NET Connections Talk on the Ajax
Control Toolkit
If you are interested in learning more about the changes that we are making to the Ajax
Control Toolkit then please come to my talk on the Ajax
Control Toolkit at the upcoming ASP.NET Connections conference. In the talk, I will present a summary of the changes that we have made to the Ajax
Control Toolkit over the last several months and discuss our future plans.
Do you have ideas for new Ajax
Control Toolkit controls? Ideas for improving the toolkit? Come to my talk – I would love to hear from you.
You can register for the ASP.NET Connections conference by visiting the following website:
Register for ASP.NET Connections
Summary
The previous release of the Ajax
Control Toolkit – the July 2011 Release – has had over 100,000 downloads. That is a huge number of developers who are working with the Ajax
Control Toolkit. We are really excited about the new features which we added to the Ajax
Control Toolkit in the latest September sprint. We hope that you find the updated Calender
control, the new Twitter
control, and the new Gravatar
control valuable when building your ASP.NET Web Forms applications.