Inside ASP.NET 2.0 DataBound Control - 1
原创文章,如需转载,请注明出处。
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的主要接口:
1
public 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
}

2

3

4

5

6

7

8

9

10

11

12

DataSource属性用来支持ASP.NET 1.1的数据绑定方式,当设定了DataSource属性后,控件将会调用ValidateDataSource方法来进行验证,通常情况下设定的对象应该是IListSource、IEnumerable或者IDataSource。
而DataSourceID属性则指定了数据源控件的ID,数据绑定控件将会从该数据源控件中获取数据。
BaseDataBoundControl定义了一个抽象方法PerformSelect用来从绑定的数据源中获取数据,然后重载DataBind方法来调用PerformSelect。所有从BaseDataBoundControl派生的类都应当重载PerformSelect方法来实现数据获取,而不应当重载DataBind。
参见DataBind方法的实现:
值得一提的是BaseDataBoundControl在页面生命周期中定义了一些时机来进行数据绑定:
下一篇文章将会讲述DataBoundControl.
而DataSourceID属性则指定了数据源控件的ID,数据绑定控件将会从该数据源控件中获取数据。
BaseDataBoundControl定义了一个抽象方法PerformSelect用来从绑定的数据源中获取数据,然后重载DataBind方法来调用PerformSelect。所有从BaseDataBoundControl派生的类都应当重载PerformSelect方法来实现数据获取,而不应当重载DataBind。
参见DataBind方法的实现:
1
public override void DataBind()
2
{
3
if (base.DesignMode)
4
{
5

6
}
7
this.PerformSelect();
8
}

2

3

4

5


6

7

8

值得一提的是BaseDataBoundControl在页面生命周期中定义了一些时机来进行数据绑定:
- OnInit 如果控件的ViewState被禁掉的话,则要求进行数据绑定。
- OnPagePreLoad 设定了一个内部标志表明控件初始化已经完成。
- OnPreRender 设定了一个内部标志表示控件当前生命周期状态,然后尝试进行数据绑定。
下一篇文章将会讲述DataBoundControl.
分类:
ASP.NET
标签:
DataBoundControl
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!