ObjectDataSource.SelectMethod 属性

定义

获取或设置 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 Forms页上显示数据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 IEnumerableSelect 方法返回 。
DataTable 使用 DataViewDataTable 创建 ,并由 Select 方法返回。
DataView DataView方法返回 。Select
DataSet 提取第DataSetDataTableDataView ,由 方法创建并返回 Select
Object 对象包装在单元素 IEnumerable 集合中,并由 Select 方法返回。

属性SelectMethod委托给SelectMethodObjectDataSource 控件关联的 对象的 属性ObjectDataSourceView

使用 ObjectDataSource 类删除或更新数据时,请确保为ObjectDataSource集合或UpdateParameters集合中的DeleteParameters控件配置的参数名称与 select 方法返回的列名称匹配。

对象生存期

属性 SelectMethod 标识的方法可以是实例方法,也可以是 static Visual Basic) Shared 方法中的 (。 如果它是实例方法,则每次调用 属性指定的 SelectMethod 方法时,都会创建并销毁业务对象。 在调用 属性指定SelectMethod的方法之前,可以处理 ObjectCreatedObjectCreating 事件以使用业务对象。 还可以处理在 ObjectDisposing 调用 属性指定的 SelectMethod 方法后引发的事件。 如果业务对象实现 IDisposable 接口,则会在 Dispose 销毁对象之前调用 方法。 如果在 Visual Basic) Shared 中 (方法static,则永远不会创建业务对象,并且无法处理 ObjectCreatedObjectCreatingObjectDisposing 事件。

参数合并

参数从以下源添加到 SelectParameters 集合:

  • 以声明方式从 SelectParameters 元素。

  • 以编程方式从 Selecting 方法。

首先,添加 元素中列出的 SelectParameters 参数。 其次,参数以编程方式在 事件中添加 Selecting 和删除,在方法运行之前 Select 发生。 合并参数后,将解析 方法。 下一部分将讨论方法解决方法。

重要

应验证从客户端接收的任何参数值。 运行时只是将参数值 SelectMethod 替换为 属性。

方法解析

Select调用 方法时,数据绑定控件中的数据字段、在 元素中SelectParameters以声明方式创建的参数以及添加到事件处理程序中的Selecting参数将全部合并。 (有关详细信息,请参阅上一部分。) 然后,控件 ObjectDataSource 会尝试查找要调用的方法。 首先,它查找一个或多个名称在 属性中指定的 SelectMethod 方法。 如果未找到匹配项, InvalidOperationException 则会引发异常。 如果找到匹配项,则查找匹配的参数名称。 例如,假设 由 TypeName 属性指定的类型具有两个名为 SelectARecord的方法。 一个 SelectARecord 有一个参数 , ID另一个 SelectARecord 有两个参数, NameNumberSelectParameters如果集合只有一个名为 的参数ID,则SelectARecord调用仅ID具有 参数的方法。 在解析方法时不会检查 参数的类型。 参数的顺序并不重要。

DataObjectTypeName如果设置了 属性,则以其他方式解析 方法。 查找 ObjectDataSource 具有在 属性中指定的 SelectMethod 名称的方法,该方法采用 属性中指定的 DataObjectTypeName 类型的一个参数。 在这种情况下,参数的名称并不重要。

适用于

另请参阅