星辰.Net技术社区论坛

首页 » .NET » 组件/控件开发 » Inside ASP.NET 2.0 DataBound Control - 1
star65225692 - 2008-6-17 9:33:00
ASP.NET 2.0 较之ASP.NET 1.0和1.1提供了新的数据绑定模型,添加了一系列新的数据展现、编辑控件譬如GridView、DetailView以及FormsView等控件。本文旨在阐述ASP.NET 2.0新的数据绑定控件架构,并且逐一介绍每一个控件。
1. ASP.NET 2.0 DataBound Control结构

2. BaseDataBoundControl
从上图我们可以看到BaseDataBoundControl是所有数据绑定控件的基类。
该类定义了基本的数据绑定功能,能够用来展示和操作ASP.NET 2.0新的数据源控件,同时也继续支持原来ASP.NET 1.1的数据绑定方式。
看一下BaseDataBoundControl的主要接口:
1public class BaseDataBoundControl
2{
3    public virtual object DataSource  { get; set; }
4    public virtual string DataSourceId { get; set; }
5
6    public override void DataBind();
7    protected abstract void PerformSelect();
8
9    protected abstract void ValidateDataSource(object dataSource);
10
11    public event EventHandler DataBound {add; remove; }
12}


DataSource属性用来支持ASP.NET 1.1的数据绑定方式,当设定了DataSource属性后,控件将会调用ValidateDataSource方法来进行验证,通常情况下设定的对象应该是IListSource、IEnumerable或者IDataSource。

而DataSourceID属性则指定了数据源控件的ID,数据绑定控件将会从该数据源控件中获取数据。

BaseDataBoundControl定义了一个抽象方法PerformSelect用来从绑定的数据源中获取数据,然后重载DataBind方法来调用PerformSelect。所有从BaseDataBoundControl派生的类都应当重载PerformSelect方法来实现数据获取,而不应当重载DataBind。
参见DataBind方法的实现:
1public override void DataBind()
2{
3    if (base.DesignMode)
4    {
5     
6    }
7    this.PerformSelect();
8}


值得一提的是BaseDataBoundControl在页面生命周期中定义了一些时机来进行数据绑定:
从BaseDataBoundContro派生出了两个基本的数据绑定控件:DataBoundControl 和HierarchicalDataBoundControl,前者用于绑定List或者Table状的数据,而后者用于绑定树状数据。我们也可以看到ListBox, DropDownList,CheckboxList还有GridView都从DataBoundControl 派生,而TreeView以及Menu则从HierarchicalDataBoundControl派生。

下一篇文章将会讲述DataBoundControl.
1
查看完整版本: Inside ASP.NET 2.0 DataBound Control - 1