In ASP.NET 2.0, all data-bound controls support two binding mechanisms: the classic binding available in ASP.NET 1.x done through enumerable data source objects, and data source controls.
Data source controls are regular server controls with no user interface that intelligently cooperate with the control they're bound to in an effort to anticipate the user's next request.
Data source controls simplify programming in a quite a few scenarios by reducing the code you need to write.
ASP.NET 1.x data-bound controls have been modified to support data source controls; they have not been redesigned to take full advantage of data source controls. For this reason, new controls have been added, such as GridView and DetailsView.
A new type of expression ($-expression) partners data-binding expressions to provide for declarative expressions that can be used primarily in the design-time configuration of data source controls.
$-expressions differ from #-expressions because they are evaluated at parse time and their output becomes part of the page source.
ObjectDataSource is the most interesting of the data source controls because it can bridge your presentation layer to the DAL, even remotely. The ObjectDataSource control takes advantage of existing tiers and overall promotes a domain-based design over a purely tiered design.
XmlDataSource is both a hierarchical and tabular data source, but only supports readonly scenarios.