ObjectDataSource.SelectMethod 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置 ObjectDataSource 控件调用以检索数据的方法或函数的名称。
public:
property System::String ^ SelectMethod { System::String ^ get(); void set(System::String ^ value); };
public string SelectMethod { get; set; }
member this.SelectMethod : string with get, set
Public Property SelectMethod As String
属性值
一个字符串,表示 ObjectDataSource 用于检索数据的方法或函数的名称。 默认值为空字符串("")。
示例
下面的代码示例演示控件如何使用 GridView Web 窗体页上的 控件 ObjectDataSource 显示数据。 使用 ObjectDataSource 其 TypeName 属性标识部分或完全限定的类名,以及调用以使用其 SelectMethod 属性检索数据的方法。 在运行时,将使用反射创建 对象并调用 方法。 控件 GridView 通过 IEnumerable 由 属性指定的 SelectMethod 方法返回的集合进行枚举,并显示数据。
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ObjectDataSource - C# Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:gridview
id="GridView1"
runat="server"
datasourceid="ObjectDataSource1" />
<asp:objectdatasource
id="ObjectDataSource1"
runat="server"
selectmethod="GetAllEmployees"
typename="Samples.AspNet.CS.EmployeeLogic" />
</form>
</body>
</html>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %>
<%@ Page language="vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ObjectDataSource - Visual Basic Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:gridview
id="GridView1"
runat="server"
datasourceid="ObjectDataSource1" />
<asp:objectdatasource
id="ObjectDataSource1"
runat="server"
selectmethod="GetAllEmployees"
typename="Samples.AspNet.VB.EmployeeLogic" />
</form>
</body>
</html>
注解
指定的方法可以具有任何方法签名,但它必须返回下表中显示的类型之一,控件 ObjectDataSource 才能成功调用它。
| 返回类型 | 操作 |
|---|---|
| IEnumerable | IEnumerable由 Select 方法返回。 |
| DataTable | 使用 DataViewDataTable 创建 ,并由 Select 方法返回。 |
| DataView | DataView方法返回 Select 。 |
| DataSet | 提取的第DataSet一DataTable个 DataView ,并由 方法创建并返回 Select 。 |
| Object | 对象包装在单元素 IEnumerable 集合中,并由 Select 方法返回。 |
属性SelectMethod委托给SelectMethod与 ObjectDataSource 控件关联的 对象的 属性ObjectDataSourceView。
使用 ObjectDataSource 类删除或更新数据时,请确保为ObjectDataSource集合或UpdateParameters集合中的DeleteParameters控件配置的参数名称与 select 方法返回的列名匹配。
对象生存期
属性 SelectMethod 标识的方法可以是实例方法,也可以是 static Visual Basic) Shared 方法中的 (。 如果是实例方法,则每次调用属性指定 SelectMethod 的方法时,都会创建并销毁业务对象。 在调用 属性指定SelectMethod的方法之前,可以处理 ObjectCreated 和 ObjectCreating 事件以使用业务对象。 还可以处理在 ObjectDisposing 调用 属性指定 SelectMethod 的方法后引发的事件。 如果业务对象实现 IDisposable 接口,则会在 Dispose 销毁对象之前调用 方法。 如果在 Visual Basic) Shared 中 (该方法static,则永远不会创建业务对象,并且无法处理 ObjectCreated、 ObjectCreating和 ObjectDisposing 事件。
参数合并
参数从以下源添加到 SelectParameters 集合中:
以声明方式从 元素。
SelectParameters以编程方式从
Selecting方法。
首先,添加 元素中列出的 SelectParameters 参数。 其次,在 运行方法之前Select发生的 事件中Selecting以编程方式添加和删除参数。 合并参数后,将解析 方法。 下一节将讨论方法解决方法。
重要
应验证从客户端接收的任何参数值。 运行时只是将参数值 SelectMethod 替换为 属性。
方法解析
Select调用 方法时,数据绑定控件中的数据字段、在 元素中SelectParameters以声明方式创建的参数以及添加到事件处理程序中的Selecting参数将全部合并。 (有关详细信息,请参阅上一部分。) 然后,控件 ObjectDataSource 尝试查找要调用的方法。 首先,它查找具有 属性中指定的 SelectMethod 名称的一个或多个方法。 如果未找到匹配项, InvalidOperationException 则会引发异常。 如果找到匹配项,则查找匹配的参数名称。 例如,假设 由 TypeName 属性指定的类型具有两个名为 SelectARecord的方法。 一个 SelectARecord 具有一个参数 ID, 另一个 SelectARecord 具有两个参数, Name 和 Number。
SelectParameters如果集合只有一个名为 的参数ID,则SelectARecord调用仅ID具有 参数的方法。 在解析方法时不会检查参数的类型。 参数的顺序并不重要。
DataObjectTypeName如果设置了 属性,则以不同的方式解析方法。 ObjectDataSource查找具有在 属性中指定的SelectMethod名称的方法,该方法采用 属性中指定的DataObjectTypeName类型的一个参数。 在这种情况下,参数的名称并不重要。