I'm Mike Pope. I live in the Seattle area. I've been a technical writer and editor
for over 30 years. I'm interested in software, language, music, movies, books, motorcycles,
travel, and ... well, lots of stuff.

Back to ASP.NET and Whidbey for a change. In this post I list changes to so-called standard controls. (Thusly named, reasonably enough, because they appear on the Standard tab in the Toolbox in Visual Studio Whidbey.) I won't vouch for the perfect completeness of this list. If you spot mistakes or ommissions, leave a comment and I'll fix it.

GeneralThe base controls class(es) have been updated so that all controls support the following features:

Theming. You can create a theme, which is a set of properties to define a set of colors, fonts, etc. for controls. (Gross simplification.) You can then apply the theme to an individual control, a page, or a Web site.

A new ValidationGroup property allows you to create discrete sets of controls on the page that are validated (or not validated) together. This simplifies conditional validation.

Data BindingThe new data binding model is built on data source controls (SqlDataSource, AccessDataSource, ObjectDataSource, XmlDataSource, SiteMapDataSource). The data source controls abstract the mechanics of fetching data so that other controls can bind to them interchangeably. The data source control takes care of connecting, querying, and caching data. No explicit binding code is required.

A new property AppendDataBoundItems is defined for list controls (CheckBoxList, ListBox, etc). If this property is set to true, data binding adds to statically defined items, if any, rather then overwriting them.

AdRotatorAllows you to create popup and pop-under ads in addition to the banner ads from days of yore.Feature cut.Supports new data-binding model based on data source controls. (Requires a specific schema).Ads can be added dynamically to cached pages (aka "post-cache substitution" -- see also Substitution control below). [Update 22 Jan 05] Nikhil just posted an extensive discussion of post-cache substitution.

ButtonNew property OnClientClick takes as string the name of a client-side method to invoke after the button is clicked but before postback occurs. In client script you can cancel the postback.New property PostBackUrl takes a URL -- page will be cross-posted to that page.New property UseSubmitBehavior causes the button to emit JavaScript to perform post. (Like LinkButton controls.)

CalendarNew Caption property renders a caption element in the table.New UseAccessibleHeader renders day names in <th> tags.The DayRenderEventArgs object supports a new property SelectUrl. This returns the JavaScript that is normally used by the Calendar's LinkButton days. You can use it to customize the day link, like this:

FileUpload (new)Creates an HTML <input type="file"> control. Like the HtmlInputFile, but derives from WebControl, with all the rights and privileges pertaining thereto.

HiddenField (new)Creates an HTML <input type="hidden"> control. Like the HtmlInputHidden, but derives from WebControl.

ImageNew property GenerateEmptyAlternateText forces the control to render alt=""; without this property set, the control does not render an alt attribute. This gives you better control over accessibility.

ImageMap (new)Allows you to define an HTML image map. You define the map like an Image control. You then define hotspots as child controls with appropriate sets of coordinates. For each hotspot, you can specify a mode (Navigate, PostBack) and related properties (NavigateUrl or PostBackValue, which is like CommandName in a Button control). If you perform a postback, you can get the PostBackValue for a particular hotspot.

LabelNew AssociatedControlID property allows you to link a Label control with another control on the page. Renders an HTML label element. When users click the Label control or use its access key, focus passes to the associated control.

LiteralNew LiteralMode property allows you to specify how the control treats the markup in its Text property (Transform, PassThrough, Encode).

MultiView, View (new)Allows you to define multi-panel display where you can conditionally render different views. The MultiView control is the parent; you define two or more View controls as children which in turn contain markup and controls. You flip between views by setting the MultiView control's ActiveViewIndex property. This control was originally designed for mobile device browsers. Does not render any markup, just content. The control makes it slightly easier to create behavior otherwise possible with manually manipulating Panel controls (only no div) or by using the new Wizard control.

PanelNew property Scrollbars allows you to specify scrollbars (None, Horizontal, Vertical, Both, Auto).New GroupingText property takes a string; it creates a group box around the panel (div) with a title.New DefaultButton property specifies a default child button for that div; when users press ENTER inside a text box, the default button is invoked. (You can also now specify a default button for the form as a whole.)

RadioButtonNew properties LabelAttributes and ItemAttributes allow you to specify custom attributes for the two elements (item and label) rendered by the control.

Substitution (new)Allows you to specify a region on the page that can be dynamically filled even on a cached page. You define a callback method for the control; in the method, you get whatever data you want, and whatever you return is injected into the page at the position of the Substitution control.

TextBoxNew property AutoCompleteType allows you to specify where the text box might get its list of possible values. By default, browsers that support auto-complete will index possible values based on the name attribute. The AutoCompleteType property allows you to either specify none (do not use auto-complete) or any of various fields defined in the vcard schema.