ControlFreak
LANGUAGES:
VB.NET | C#
ASP.NET
VERSIONS: 2.0 (Beta 2)
The New ASP.NET 2.0 Controls
Microsoft Has Outdone Itself
By Steve C. Orr
The number of controls included in ASP.NET 1.x was
impressive, but Microsoft has really outdone itself with ASP.NET 2.0 so much
so that I predict you ll be more productive than ever with the dozens of new
controls at your disposal. Following is a brief introduction to the new
controls in ASP.NET 2.0 so you can be ready to dive in and start working with
all these time-saving goodies.
Let s Get Started
The new ImageMap
control extends the Image control with a collection of clickable hot spots. You
can create (and configure the dimensions of) as many rectangle, circle, and
polygon hotspots as you need. The HotSpotMode property can be used to specify
whether the user s click should cause a postback or navigate the user directly
to a URL.
The new BulletedList
control is nothing revolutionary, but when you need to display a bulleted list
on your page, this control is a perfect fit. In addition to the databinding
capabilities you d expect, there are also such useful properties as BulletStyle,
which can be set to circles, squares, numbers, roman numerals, custom images,
etc. With the DisplayMode property you can specify that the list items be
represented by standard text, HyperLinks, or LinkButtons.
The HiddenField
and FileUpload controls are little
more than empty shells around the standard old HTML controls. If you ve used
the equivalent HTML controls you already know how to use these. If you are
intimidated by the HTML tab of your Visual Studio toolbox, then these new Web
controls will let you stay at home in the Web Controls tab.
The new MultiView
control works in concert with embedded View
controls. Each View control acts as a content container, and behaves very much
like a Panel control at design time. At run time the MultiView control manages
the View controls to ensure only one is visible at a time. Use the
ActiveViewIndex property of the MultiView control to specify which View should
be visible at any particular time. By keeping each of the views on the same
page you can negate the need to persist data between pages, which can be
troublesome in ASP.NET (compared to Windows Forms applications).
|
New View Controls
|
Description
|
|
MultiView
|
The MultiView control manages multiple View controls to
ensure only one is visible at a time.
|
|
View
|
Each View control can contain any combination of
controls you desire.
|
|
FormView
|
The FormView control contains seven templates, which can
be modified and displayed in varying combinations to support a variety of
functionality.
|
|
DetailsView
|
The DetailsView control displays the details of a
database record on a page. The automated display and editing capabilities
provide the potential to eliminate lots of boilerplate code.
|
|
GridView
|
A feature-rich replacement for the DataGrid.
|
|
LoginView
|
Displays different sets of controls based on the user s
login status.
|
|
TreeView
|
One of the most feature-rich controls of ASP.NET 2.0,
but not truly a View control in the same sense as these other View controls.
|
Figure 1: View
controls automatically decide which sets of controls to display based on run
time circumstances. They support data binding and editing.
The new Wizard
control takes the MultiView concept to the next level. This rich control lets
you create a fully functional wizard to lead users through a sequential set of
steps. You can create and configure as many steps as you need in the wizard at
design time via the new SmartTag technology of the Visual Studio 2005 designer.
The designs you can create are highly customizable because of a flexible object
model that permits the use of Templates to represent one or more of the steps. The
wizard manages the Back and Next buttons appropriately and persists all control
values between each step so you don t have to worry about such mundane details.
The new Substitution
control works in cooperation with the OutputCache directive that s been around
since ASP.NET 1.x. Specifically, it acts as an exception to the OutputCache
directive. Set the MethodName property to a valid function name in the page. Every
time the page is requested, this function will be called and the return value
will be automatically displayed in the Substitution control. This way you can
be sure the contents displayed in the control will always be fresh, even though
the rest of the page may be pulled from the cache.
Say Goodbye to the DataGrid
The DataGrid control was good for its time, but its time
is over. It still exists for backward compatibility purposes, but it s no
longer listed in the Visual Studio 2005 toolbox by default. The replacement is
the new GridView control, which is
better in every way. The paging and sorting functionality is now far more
automated, and yet still extensible in case you want to get your hands dirty. The
GridView control renders more efficiently than the DataGrid control did, and it
supports a wider variety of column types: BoundField, ButtonField,
CheckboxField, CommandField, HyperLinkField, ImageField, and TemplateField.
Unfortunately, the GridView control still performs most of
its functions via postbacks and server-side code, which can result in
less-than-stellar performance. However, the GridView control does provide an
EnableSortingAndPagingCallback property that enables the server-side sorting and
paging routines to be called without a full-page postback; only the GridView
control calls back to the server and gets updated while the rest of the page
stays put.
The GridView can also provide editing capabilities, with
appropriate controls automatically chosen for every field and the ability to
customize them when you see fit.
The GridView control is great for displaying multiple rows
of data, but how should a developer handle the common drilldown scenario of
providing a detailed single record view when the user clicks on a row in the
grid? In ASP.NET 1.x this requires quite a bit of code and probably a whole new
page. In ASP.NET 2.0, the new DetailsView control comes to the rescue. Like the
GridView, it automatically displays appropriate controls when in edit mode and
allows for detailed customizations via templates. The DetailsView control can be used by itself, but when combined with
the GridView control it provides an elegant solution to many common Master/Detail
scenarios.
The new FormView
control provides similar, less automated functionality. The view must be
configured via templates at run time or else nothing will appear on the form at
run time. This isn t such a bad thing now that templates can be edited visually
in the designer (a new feature provided by Visual Studio 2005). The FormView
control provides seven templates that can be customized, resulting in a wide
range of potential functionality for you to mold as needed.
Powerful New Data Controls
Data binding has taken on a whole new dimension in ASP.NET
2.0. In most cases, controls can be fully data bound declaratively, with no
code required. This is made possible by the new DataSource controls. The SqlDataSource control pulls data from a
SQL Server database; the AccessDataSource
control pulls data from an Access database. Likewise, the XMLDataSource control retrieves data from an XML file or stream.
|
DataSource
Controls
|
Description
|
|
SqlDataSource
|
Used for data binding to a Microsoft SQL Server (or SQL
Server Express) database.
|
|
AccessDataSource
|
Used for data binding to a Microsoft Access database.
|
|
XMLDataSource
|
Used for data binding to XML files and streams.
|
|
ObjectDataSource
|
Used for data binding to custom middle-tier business
objects.
|
|
SiteMapDataSource
|
Used for binding to a Site Map, which is stored in XML
by default.
|
Figure 2: The new
DataSource controls eliminate reams of data access code by taking care of
tedious details, such as creating connections and parameterizing queries.
In keeping with the ASP.NET 2.0 theme of productivity,
these controls will eliminate the need for a lot of boring, boilerplate code
that you ve likely written time and time again. Although data binding in ASP.NET
1.x was nice, every data-bound control still required many lines of code for
doing routine things, such as retrieving connection strings, opening
connections, creating SQL parameters, managing DataAdapters, etc. In many
projects that kind of code will be completely eliminated because each of these
new DataSource controls basically combines the functionality of the old
Connection, Command, and DataAdapter components (which are still included, but
are no longer in the toolbox by default). They can also handle caching and
filtering.
Those DataSource controls can certainly be useful, but
scalable applications require middle tiers, and therefore controls often cannot
be bound directly to a database. That s where the ObjectDataSource control comes in. It can retrieve data from custom
middle-tier objects you may have created to encapsulate database access,
business rules, and other such details.
Finishing off the DataSource controls is SiteMapDataSource. This control manages
the portrayed navigational structure of a Web site. By default the site
structure is stored in an XML file, although the SiteMapDataSource control can
be configured to load from a database or other custom data store if you prefer.
The SiteMapDataSource control works in conjunction with the navigation
controls.
Navigation Controls
The new SiteMapPath
control displays the user s current location in the navigational hierarchy of
the Web site. Each level is represented with a hyperlink (as illustrated below)
so the user can quickly jump to their desired destinations:
Computers > Software > Utilities
> Virus Detection
It s easy to alter the user s view of the Web site
structure (which doesn t necessarily need to match the Web site s physical
structure) because the data is retrieved from a SiteMapDataSource control,
which loads the current structure from an XML file by default.
ASP.NET has always been in desperate need of a Menu control, and now we finally have
one! This high-quality hierarchical menu control acts just like you d expect,
and can appear vertically or horizontally. This exceptionally configurable
control can be bound to a SiteMapDataSource control or edited independently.
Treeview
controls are a staple of most modern languages, but mysteriously one was not
included in ASP.NET 1.x. That oversight has been corrected in ASP.NET 2.0. The
ImageSet property lets you automatically display a variety of useful and
attractive images in front of each node. While the default behavior is to post
back between each node click and raise a SelectedNodeChanged event, the Target
property lets you specify another frame in which to display the address in the
NavigateURL property, so no postback is required. You can also use the
SelectAction property to specify other behaviors, such as expanding the node
without a postback, doing nothing, or expanding the node and raising a postback
event. Each node can optionally have a checkbox.
The TreeView nodes can be configured at design time, bound
to a SiteMapDataSource control, or, for larger tree structures, sub nodes can
be loaded on demand to conserve server resources. This requires a postback
after many of the user s mouse clicks except for uplevel browsers, which can
take advantage of the automatically generated client-side code to call back to
the server and fill in the nodes without requiring a full-page postback.
Secure Your Site with Login Controls
Forms Authentication was a great advancement in ASP.NET
1.x because it eliminated much of the boilerplate code needed for basic
authorization tasks. The new Login controls of ASP.NET 2.0 take it to the next
level. In many cases, not a single line of code will need to be written to
fully secure a Web site. All the required user management, admin pages, and
database management is handled automatically by the new controls and their
underlying infrastructure. Even a database is provided automatically, although
you can extend the authentication system in nearly any way imaginable for cases
where you prefer to take control.
The new Login
control provides a user name and password screen that you may have created
dozens of times before. However, you ll never need to create one ever again,
now that it s been done in such a thoroughly reusable and extensible way.
Figure 3: New Login controls provide
Web sites with a fully functional user management system, with no code required.
The Login and PasswordRecovery controls are pictured here.
The new LoginStatus
control displays in two different states. If the user is not logged in, it
provides a hyperlink to the login page. If the user is logged in, it provides a
hyperlink that logs them out. In either case, you can configure the hyperlink
text that is displayed.
The LoginView
control is similar to the LoginStatus control, except instead of displaying a
simple link, it will display whatever set of controls you d like based on the
user s login status. It can display one set of controls for logged-out users,
and another set of controls for logged-in users. It can also display varying
sets of controls based on the current user s role.
Any decent authentication system must provide users with a
way to change their password. The ChangePassword
control provides such functionality by providing the standard three-textbox
user interface for old password, new password, and verify new password. By
default it accepts only strong passwords, and you can configure it to accept
whatever combination of letters, numbers, and symbols your requirements demand.
Any decent authentication system must also provide a way
to deal with forgotten passwords. That s where the new PasswordRecovery control comes in handy. This flexible control can
handle a variety of common techniques for dealing with forgotten passwords,
such as secret question/answer pairs, e-mailing a person their password, and/or
generating a new password.
The LoginName
control displays the person s user name when they re logged in (or when it s
available automatically through Windows Authentication); it s invisible when
the user is not logged in.
The CreateUserWizard
control is a functionally rich control that allows a user to enter all the standard
information a site generally requires to create a new user, such as their
desired username, password, e-mail address, etc. It s fully extensible,
allowing you to add whatever custom fields you require. Because it inherits
from the Wizard Web control, you can easily divide the user registration
process into as many steps as you desire.
Figure 4: You may never need to open
another web.config file. Built-in administration screens make it easy to
configure Web site settings and manage users.
WebPart Controls
WebParts are all about personalization. There is an entire
infrastructure underlying ASP.NET 2.0 that can handle personalization and
authentication. The WebPartManager
control s purpose is to manage and orchestrate all the WebPart controls on the
page. It is not visible at run time.
Each instance of the WebPartZone
control can hold one or more WebParts. Each WebPartZone can be minimized,
moved, deleted, or added by the developer and (if configured to do so) by the
user. Each user can configure the page to their own liking and the
customizations will be remembered and persisted between each of their visits.
The CatalogZone
control contains CatalogPart controls, such as DeclarativeCatalogPart, PageCatalogPart,
and ImportCatalogPart. These
controls are used to create a catalog of WebParts that users can choose to add
to their page.
EditorPart controls (such as the AppearanceEditorPart, BehaviorEditorPart,
LayoutEditorPart, and PropertyGridEditorPart) can only be
placed within an EditorZone control.
These controls are used to allow users to edit and personalize pages.
The ConnectionZone
control contains ConnectionPart
controls. These are used to create connections between WebParts on a page. They
permit one WebPart to send information to another WebPart.
Finally, the ProxyWebPartManager
control provides a way to specify static connections inside a content page when
the WebPageMaster class has been added to a Master Page.
New Report Controls
Reporting options were limited in ASP.NET 1.x, so it s
good to see a wider selection in this area. The new ReportViewer control allows you to design reports visually from a
DataSet or other data source. It can cache reports, generate reports on demand,
retrieve pre-generated reports from SQL Server 2005 Reporting Services, and
more.
If you re already using the CrystalReportViewer control
from ASP.NET 1.x, you ll be pleased to know that it has been joined by two new
companion controls: CrystalReportPartsViewer
and CrystalReportSource. Both of
these controls are invisible at run time. The CrystalReportSource control
manages report data sources, parameters, and caching.
In the End
That covers all the new Web controls that appear by
default in the Visual Studio 2005 (Beta 2) toolbox. There are, however, many
other new classes in the .NET Framework that inherit from System.Web.UI.Control
and System.Web.UI.WebControl. The limited space here dictates that their
introductions will have to wait for future articles.
And don t forget about the old ASP.NET 1.x controls, because
many of them have enhancements worthy of note. For example:
- Button controls now support posting to other
pages and have a declarative client-side OnClientClick event.
- The Panel control now has scrollbar support so
you can easily create scrolling areas within your page.
- The Validation controls have been enhanced to
support multiple independent validation groups within a single page.
Quite a few of the controls listed in this article deserve
full articles of their own, so keep an eye out they ll soon be appearing in the
pages of asp.netPRO magazine.
Steve C. Orr is an
MCSD and a Microsoft MVP in ASP.NET. He s been developing software solutions
for leading companies in the Seattle
area for more than a decade. When he s not busy designing software systems or
writing about them, he can often be found loitering at local user groups and
habitually lurking in the ASP.NET newsgroup. Find out more about him at http://SteveOrr.net
or e-mail him at mailto:Steve@Orr.net.