数据源控件 百科内容来自于: 百度百科

引言

简而言之,数据源控件概括了一个数据存储和可以针对所包含的数据执行的一些操作。DataBound控件通过其DataSourceID属性与一个数据源控件相关联。大多数传统的数据存储要么是表格格式,要么是分层的,数据源控件也相应地分为两类。在此要介绍的是表格格式的数据源控件。
数据源控件自身并不能发挥多大作用;所有逻辑都封装在DataSourceView派生的类中。至少有一个DataSourceView必须实现检索(即SELECT)一组行的功能。它可以提供修改数据(即INSERT、UPDATE和DELETE)的功能(可选)。数据绑定控件可通过各种Can???属性来检查启用功能集。数据源控件本身只是一个或多个唯一命名视图的容器。依据惯例,默认视图可以按其名称进行访问,也可以为空。不同视图之间是否存在关系或者存在怎样的关系可以根据每个数据源控件的实现情况来进行适当的定义。例如,某个数据源控件可能会通过不同的视图对同一个数据提供不同的经筛选的视图,或者可能会在辅助视图中提供一组子行。可使用数据绑定控件的DataMember属性来选择某个特殊的视图(如果该数据源控件提供了多个视图)。
最后再介绍一点内容。数据源控件(及其视图)会实现两组API。第一组API是就四种常用的数据操作而定义的一个抽象界面,以常规方式从任一数据绑定控件中使用。第二组是可选的,它使用其表示的域或数据存储方面的术语来定义,通常被强类型化,且面向应用程序开发人员。

常见控件

Access Data Source Sql Data Source

典型示例

在这些文章中,将实现一个WeatherDataSource,它将针对由weather(英文)提供的REST(英文)XMLAPI来工作,以便根据邮政编码来检索天气信息。通常会首先实现派生的数据源控件。
public class WeatherDataSource : DataSourceControl {

 public static readonly string 

 CurrentConditionsViewName = "CurrentConditions";

 private WeatherDataSourceView _currentConditionsView;

 private WeatherDataSourceView CurrentConditionsView {

 get {

 if (_currentConditionsView == null) {

 _currentConditionsView = new WeatherDataSourceView(this, CurrentConditionsViewName);

 }

 return _currentConditionsView;

 }

 }

 public string ZipCode {

 get {

 string s = (string)ViewState["ZipCode"];

 return (s != null) ? s : String.Empty;

 }

 set {

 if (String.Compare(value, ZipCode, 

 StringComparison.Ordinal) != 0) {

 ViewState["ZipCode"] = value;

 CurrentConditionsView.RaiseChangedEvent();

 }

 }

 }

 protected override DataSourceView GetView(string viewName) {

 if (String.IsNullOrEmpty(viewName) ||

 (String.Compare(viewName, CurrentConditionsViewName,

 StringComparison.OrdinalIgnoreCase) == 0)) {

 return CurrentConditionsView;

 }

 throw new ArgumentOutOfRangeException("viewName");

 }

 protected override ICollection GetViewNames() {

 return new string[] { CurrentConditionsViewName };

 }

 public Weather GetWeather() {

 return CurrentConditionView.GetWeather();

 }

 }
在此选择从 DataSourceControl 中派生。有一点是不易察觉的,事实上数据绑定控件要查找 IDataSource 界面,而 DataSource 控件通过实现 GetView 和 GetViewNames 来实现该界面。之所以需要界面是为了使数据源控件能够既是表格格式又是分层的(如果可能的话),在这种情况下从主要模型中派生并将另一个模型作为界面来实现)。其次,还允许在各种方案中转换其他控件,以使数据源的容量加倍。 另外还要注意公共 ZipCode 属性和返回强类型化 Weather 对象的 GetWeather 方法。此 API 适合于页面开发人员。页面开发人员无需考虑 DataSourceControl 和 DataSourceView。
默认情况下,DataSourceView 类从诸如 CanUpdate 等的属性返回 false,而从 Update 和相关方法抛出 NotSupportedException。在此,在 WeatherDataSourceView 中唯一需要做的就是替代抽象的 ExecuteSelect 方法,返回包含“选定”天气数据的 IEnumerable。在实现过程中,使用了帮助程序 WeatherService 类,该类仅使用 WebRequest 对象来查询 weather(英文),方法是使用所选的邮政编码(这没什么特别的)。
数据访问代码就被封装在数据源控件中。此外,通过此模型,weather(英文)能够发布一个组件,该组件还可以封装特定于其服务的详细信息。但愿它会好用。此外,抽象的数据源界面允许 FormView 仅针对天气数据进行工作。
$firstVoiceSent
- 来自原声例句
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定