简单的说,DataSource数据源控件是一个抽象的数据库,可以在该数据库里进行数据的操作(Select,Delete,Update和Insert)。数据源控件通过控件的DataSourceID和具有绑定功能的数据源控件(例如GridView)联系起来,下面是DataSource控件的定义:

public abstract class DataSourceControl : Control, IDataSource, IlistSource

可以看到,DataSourceControl除了实现IlistSource接口外,还需要实现IdataSource接口,因为该控件需要完成两个功能:

1)传统的具有DataGrid的数据绑定控件。

2)ASP.NET2.0新增的具有声明性的数据绑定功能。

由于上面两个功能的支持,这就是本书在介绍绑定控件时提到的为什么可以通过两种方式绑定数据源的原因。

下面是DataSource控件提供的几个重要方法与说明。

方法

说明

DataBind

将数据源绑定到被调用的服务器控件及其所有子控件。(从Control继承。)

DataBindChildren

将数据源绑定到服务器控件的子控件。

GetView

获取与数据源控件关联的命名的数据源视图。

GetViewNames

获取名称的集合,表示与DataSourceControl控件关联的DataSourceView对象的列表。

DataSource控件本身很简单,因为所有的逻辑操作都是由DataSourceView类来完成。作为最为基本要求,DataSource必须能够从基础数据库里检索数据(也就是必须执行Select),而对于数据的编辑(例如Insert,Update和Delete)则是可选的。

和数据库实体类似,数据库可以包含多个视图,同样DataSource控件可以认为是一个数据容器,它可以包含一个或者多个DataSourceView,每一个DataSourceView必须具有唯一个视图名称以便彼此区分。例如DataSource控件可能提供过滤的数据视图,同时还可以提供排序后的数据视图。那么数据绑定控件如GridView又怎么区分每一个视图呢?

对于数据绑定控件提供了DataMember属性,该属性可以设置为DataSourceView视图的值。注意:如果您没有明确指出数据视图的名称,系统将使用默认的名称视图。

现在我们看看DataSourceVIew提供了哪些成员?如下所示:

public string Name { get; }

public virtual bool CanDelete { get; }

public virtual bool CanInsert { get; }

public virtual bool CanPage { get; }

public virtual bool CanRetrieveTotalRowCount { get; }

public virtual bool CanSort { get; }

public virtual bool CanUpdate { get; }

protected EventHandlerList Events { get; }

这里需要注意两点:

正如上面我们说过,DataSourceVIew可以提供多个视图,所以利用Name属性,我们就可以获取每一个视图的名称。其次,对于CanXXX方法,您可以看到它具并没有CanSelect属性,这是因为CanSelect是必须的,而CanXXX默认值则是false。

如果我们需要自定义DataSourceView,例如我们向利用自定义的DataSourceView来从基础数据Web Service获取数据源,那么我们就可以利用CanXXX属性来执行逻辑操作。

DataSourceView控件有一个事件:该实现的定义如下:

public event EventHandler DataSourceViewChanged;

该事件在基础数据库里的数据改变时触发,而该事件的触发会进一步执行数据绑定,进而刷新数据绑定控件的数据显示

当自定义DataSOurceView控件时,我们需要捕捉IDataSource接口的DataSourceChanged事件,以便更新DataSourceView,并继而触发DataSourceViewChanged

DataSourceView同样还提供了下面的方法来执行数据操作

public virtual void Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback);

public virtual void Insert(IDictionary values, DataSourceViewOperationCallback callback);

public virtual void Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback);

public virtual void Delete(IDictionary keys, IDictionary oldValues, DataSourceViewOperationCallback callback);

protected internal abstract IEnumerable ExecuteSelect(DataSourceSelectArguments arguments);

protected virtual int ExecuteInsert(IDictionary values);

protected virtual int ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues);

protected virtual int ExecuteDelete(IDictionary keys, IDictionary oldValues);

protected virtual void OnDataSourceViewChanged(EventArgs e);

protected internal virtual void RaiseUnsupportedCapabilityError(DataSourceCapabilities capability);

这些方法的前四个可以在数据绑定中执行Select,Insert,Delete和Update操作。这而默认命名方式是ExecuteXXX命名的方法可以支持异步调用,ExecuteInsert, ExecuteUpdate和ExecuteDelete并不是抽象方法是因为这些方法可以执行Select的运行结果,所有对它的直接调用将抛出NotSupportedException异常。

.net数据源控件绑定mysql_数据源控件与数据绑定控件的进一步简单讨论(1)相关推荐

  1. 数据绑定控件之DataList

    上篇博客讨论了Repeater控件的基本用法,它是最基本的数据绑定控件,只提供了数据绑定的功能,熟练运用Repeater控件后,其它类似的数据绑定控件就很简单了.接着我们上篇博客的内容继续,今天来讨论 ...

  2. repeater 控件ajax绑定数据源,[Asp.net之旅]--数据绑定控件之Repeater

    引言 前几篇的文章在说AJAX的内容,利用AJAX技术能够开发出高效运行的网站应用程序,不过在进行B/S项目开发时只拥有AJAX技术是远远不够的,踏入到B/S要学的东西会更多,但相较C/S的复杂逻辑结 ...

  3. 数据绑定控件之Repeater

    前几篇的文章在说AJAX的内容,利用AJAX技术能够开发出高效运行的网站应用程序,不过在进行B/S项目开发时只拥有AJAX技术是远远不够的,踏入到B/S要学的东西会更多,但相较C/S的复杂逻辑结构来说 ...

  4. ASP.Net2.0 数据绑定控件的优越性在哪里?

    尽管有丰富.功能强大的编程接口,ASP.NET 1.x DataGrid 控件仍需要编写大量自定义代码来处理普通操作,如分页.排序.编辑和删除数据.例如,当用户单击以保存或取消更改时,DataGrid ...

  5. ASP.NET 2.0 的数据源、数据绑定控件概述与区别

    一.Render UI 1 GridView GridView 控件用来在表中显示数据源的值.每列表示一个字段,而每行表示一条记录.GridView 控件支持下面的功能: 绑定至数据源控件,如 Sql ...

  6. asp net夜话之八 数据绑定控件

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 通过前面 ...

  7. 数据绑定控件收藏 DropDownList ListBox GridView DataList Repeater FormView DetailsView

    通过前面的例子我们看到每次我们要显示数据的时候都要通过一个循环来显示满足条件的数据,这是一个比较麻烦的过程,为此微软定义了一系列的控件专门用于显示数据的格式,通过这些控件可以以可视化的方式查看绑定数据 ...

  8. asp.net夜话之八:数据绑定控件(上)

    通过前面的例子我们看到每次我们要显示数据的时候都要通过一个循环来显示满足条件的数据,这是一个比较麻烦的过程,为此微软定义了一系列的控件专门用于显示数据的格式,通过这些控件可以以可视化的方式查看绑定数据 ...

  9. asp.net夜话之八:数据绑定控件

    通过前面的例子我们看到每次我们要显示数据的时候都要通过一个循环来显示满足条件的数据,这是一个比较麻烦的过程,为此微软定义了一系列的控件专门用于显示数据的格式,通过这些控件可以以可视化的方式查看绑定数据 ...

最新文章

  1. 为什么程序员都不喜欢使用 switch ,而是大量的 if……else if ?
  2. 近期活动盘点: Call for Code编程马拉松邀请赛
  3. iOS UIVisualEffectView毛玻璃亮度不符合要求
  4. Dajngo admin使用
  5. 1.6 为什么使用向上转型而不直接创建子类对象?
  6. linux脚本中怎么直接替换,linux-如何快速替换IP
  7. kotlin 查找id_Kotlin程序查找给定范围内的素数
  8. u-boot分析(八)----串口初始化
  9. Non-Rigid Registration Under Isometric Deformations
  10. [Android] 开发第十天
  11. 计算机网络自顶向下第六章,计算机网络 自顶向下方法 第六章(英文版).ppt
  12. 移植ffmpeg到android_1
  13. openwrt默认mac地址配置(MT7620a)
  14. FastStone注册码
  15. jadx学习记录01
  16. Web前端下载文件的几种常见方式
  17. KVM虚拟机如何新增一块磁盘?
  18. 郎鹤焱张鹤伦计算机学院,德云社都是“低学历”?郎鹤焱、阎鹤祥都毕业于北京工业大学...
  19. 好用的电视盒子软件推荐:无广告看电视我选这两款
  20. MIUI10设置Android通知,Miui10状态栏美化修改工具

热门文章

  1. _Ansible批量管理与维护
  2. 【拔刀吧少年】之shell数组
  3. java 释放指针_C库释放来自Rust的指针
  4. python持久化存储文件操作
  5. CNCF TOC 委员张磊:不断演进的云原生给我们带来了什么?
  6. 深入理解领域驱动设计中的聚合
  7. 2020年阿里云边缘计算和CDN的关键词
  8. 一个用理性设计的搞笑游戏
  9. 还原《山海经》中的东方奇幻世界,这款手游是怎么做到的?
  10. shell脚本中的条件测试