zoukankan      html  css  js  c++  java
  • 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的主要接口:

     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.
  • 相关阅读:
    《C#高级编程(第6版)》第10章筆記第10章集 合
    《C#高级编程(第6版)》第6章筆記第6章运算符和类型强制转换
    解决flash跨域读取XML的问题
    轉:showModalDialog和showModelessDialog使用心得
    用ASP为blog程序编写Trackback功能 小李刀刀(转载)
    轉:VB6中将数据导出到Excel提速之法
    C#讀書資源
    [轉]在SQL Server中使用种子表生成流水号注意顺序
    如何导入导出MySQL数据库*.sql文件操作
    《C#高级编程(第6版)》第7章筆記第7章委托和事件
  • 原文地址:https://www.cnblogs.com/tedzhao/p/DataBoundControl.html
Copyright © 2011-2022 走看看