跟小D每日学口语
随笔 - 12  文章 - 0 评论 - 43 trackbacks - 2
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

与我联系

搜索

 

常用链接

留言簿

我参加的小组

我参与的团队

我的标签

随笔分类(3)

随笔档案(12)

最新评论

阅读排行榜

评论排行榜

原创文章,如需转载,请注明出处。

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  getset; } 
 4     public virtual string DataSourceId getset; } 
 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在页面生命周期中定义了一些时机来进行数据绑定:
  • OnInit
  • 如果控件的ViewState被禁掉的话,则要求进行数据绑定。
  • OnPagePreLoad
  • 设定了一个内部标志表明控件初始化已经完成。
  • OnPreRender
  • 设定了一个内部标志表示控件当前生命周期状态,然后尝试进行数据绑定。
从BaseDataBoundContro派生出了两个基本的数据绑定控件:DataBoundControl 和HierarchicalDataBoundControl,前者用于绑定List或者Table状的数据,而后者用于绑定树状数据。我们也可以看到ListBox, DropDownList,CheckboxList还有GridView都从DataBoundControl 派生,而TreeView以及Menu则从HierarchicalDataBoundControl派生。

下一篇文章将会讲述DataBoundControl.
Tag标签: DataBoundControl
posted on 2008-06-12 17:53 ted 阅读(1326) 评论(3)  编辑 收藏 所属分类: ASP.NET DataBoundControl

FeedBack:
#1楼  2008-06-12 19:15 chenyaping      
学习了,写的不错!
  回复  引用  查看    
#2楼  2008-06-13 10:49 icewater      
支持!
  回复  引用  查看    
#3楼  2008-06-13 11:06 朝晖的.net      
继续深入吧~~~
顶你啊楼主......
  回复  引用  查看    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-07-23 17:48 编辑过

相关链接: