📅  最后修改于: 2020-11-21 05:51:09             🧑  作者: Mango
数据源控件与数据绑定控件进行交互,并隐藏复杂的数据绑定过程。这些工具可将数据提供给数据绑定控件,并支持执行插入,删除,排序和更新等操作。
每个数据源控件都包装一个特定的数据提供者关系数据库,XML文档或自定义类,并有助于:
ASP.NET中有许多数据源控件可用于从SQL Server,ODBC或OLE DB服务器,XML文件和业务对象访问数据。
根据数据类型,这些控件可以分为两类:
用于分层数据的数据源控件是:
XMLDataSource-允许绑定带有或不带有模式信息的XML文件和字符串。
SiteMapDataSource-允许绑定到提供站点地图信息的提供程序。
用于表格数据的数据源控件为:
Data source controls | Description |
---|---|
SqlDataSource | It represents a connection to an ADO.NET data provider that returns SQL data, including data sources accessible via OLEDB and ODBC. |
ObjectDataSource | It allows binding to a custom .Net business object that returns data. |
LinqdataSource | It allows binding to the results of a Linq-to-SQL query (supported by ASP.NET 3.5 only). |
AccessDataSource | It represents connection to a Microsoft Access database. |
数据源视图是DataSourceView类的对象。代表针对不同数据操作(例如排序,过滤等)的数据的自定义视图。
DataSourceView类用作所有数据源视图类的基类,这些类定义了数据源控件的功能。
下表提供了DataSourceView类的属性:
Properties | Description |
---|---|
CanDelete | Indicates whether deletion is allowed on the underlying data source. |
CanInsert | Indicates whether insertion is allowed on the underlying data source. |
CanPage | Indicates whether paging is allowed on the underlying data source. |
CanRetrieveTotalRowCount | Indicates whether total row count information is available. |
CanSort | Indicates whether the data could be sorted. |
CanUpdate | Indicates whether updates are allowed on the underlying data source. |
Events | Gets a list of event-handler delegates for the data source view. |
Name | Name of the view. |
下表提供了DataSourceView类的方法:
Methods | Description |
---|---|
CanExecute | Determines whether the specified command can be executed. |
ExecuteCommand | Executes the specific command. |
ExecuteDelete | Performs a delete operation on the list of data that the DataSourceView object represents. |
ExecuteInsert | Performs an insert operation on the list of data that the DataSourceView object represents. |
ExecuteSelect | Gets a list of data from the underlying data storage. |
ExecuteUpdate | Performs an update operation on the list of data that the DataSourceView object represents. |
Delete | Performs a delete operation on the data associated with the view. |
Insert | Performs an insert operation on the data associated with the view. |
Select | Returns the queried data. |
Update | Performs an update operation on the data associated with the view. |
OnDataSourceViewChanged | Raises the DataSourceViewChanged event. |
RaiseUnsupportedCapabilitiesError | Called by the RaiseUnsupportedCapabilitiesError method to compare the capabilities requested for an ExecuteSelect operation against those that the view supports. |
SqlDataSource控件表示与关系数据库(例如SQL Server或Oracle数据库)的连接,或者表示可通过OLEDB或开放式数据库连接(ODBC)访问的数据。通过两个重要属性ConnectionString和ProviderName建立与数据的连接。
以下代码段提供了控件的基本语法:
在基础数据上配置各种数据操作取决于数据源控件的各种属性(属性组)。
下表提供了SqlDataSource控件的相关属性集,该属性提供了控件的编程接口:
Property Group | Description |
---|---|
DeleteCommand, DeleteParameters, DeleteCommandType |
Gets or sets the SQL statement, parameters, and type for deleting rows in the underlying data. |
FilterExpression, FilterParameters |
Gets or sets the data filtering string and parameters. |
InsertCommand, InsertParameters, InsertCommandType |
Gets or sets the SQL statement, parameters, and type for inserting rows in the underlying database. |
SelectCommand, SelectParameters, SelectCommandType |
Gets or sets the SQL statement, parameters, and type for retrieving rows from the underlying database. |
SortParameterName | Gets or sets the name of an input parameter that the command’s stored procedure will use to sort data. |
UpdateCommand, UpdateParameters, UpdateCommandType |
Gets or sets the SQL statement, parameters, and type for updating rows in the underlying data store. |
以下代码片段显示了启用了数据操作的数据源控件:
.....
.....
ObjectDataSource控件使用户定义的类能够将其方法的输出与数据绑定控件相关联。此类的编程接口几乎与SqlDataSource控件相同。
以下是绑定业务对象的两个重要方面:
可绑定类应该具有默认构造函数,它应该是无状态的,并且具有可以映射为选择,更新,插入和删除语义的方法。
对象必须一次更新一项,不支持批处理操作。
让我们直接转到一个示例来使用此控件。学生班是要与对象数据源一起使用的班。此类具有三个属性:学生ID,姓名和城市。它具有默认构造函数和用于检索数据的GetStudents方法。
学生班:
public class Student
{
public int StudentID { get; set; }
public string Name { get; set; }
public string City { get; set; }
public Student()
{ }
public DataSet GetStudents()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable("Students");
dt.Columns.Add("StudentID", typeof(System.Int32));
dt.Columns.Add("StudentName", typeof(System.String));
dt.Columns.Add("StudentCity", typeof(System.String));
dt.Rows.Add(new object[] { 1, "M. H. Kabir", "Calcutta" });
dt.Rows.Add(new object[] { 2, "Ayan J. Sarkar", "Calcutta" });
ds.Tables.Add(dt);
return ds;
}
}
采取以下步骤将对象与对象数据源绑定并检索数据:
创建一个新的网站。
通过从解决方案资源管理器中右键单击项目,添加一个类模板,然后将上面的代码放入其中,来向其中添加一个类(Students.cs)。
构建解决方案,以便应用程序可以使用对该类的引用。
将对象数据源控件放在Web表单中。
通过选择对象来配置数据源。
为数据的不同操作选择一种数据方法。在此示例中,只有一种方法。
在页面上放置诸如网格视图之类的数据绑定控件,然后选择对象数据源作为其基础数据源。
在此阶段,设计视图应如下所示:
运行项目,它从学生班级检索硬编码的元组。
AccessDataSource控件表示与Access数据库的连接。它基于SqlDataSource控件,并提供了更简单的编程接口。以下代码段提供了数据源的基本语法:
AccessDataSource控件以只读模式打开数据库。但是,它也可以用于执行插入,更新或删除操作。这是使用ADO.NET命令和参数集合完成的。
对于ASP.NET应用程序中的Access数据库,更新是有问题的,因为Access数据库是一个纯文件,并且ASP.NET应用程序的默认帐户可能没有写数据库文件的权限。