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 Form頁面上顯示資料 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 DataView會使用 方法 DataTable 所傳回的 Select 來建立 。
DataView 方法 DataView 會傳 Select 回 。
DataSet 會擷取的第 DataSet 一個 DataTableDataView ,並由 方法建立和傳 Select 回 。
Object 物件會包裝在一個專案 IEnumerable 集合中,並由 方法傳 Select 回。

屬性 SelectMethod 會委派給 SelectMethodObjectDataSource 控制項相關聯之 ObjectDataSourceView 物件的 屬性。

當您使用 ObjectDataSource 類別來刪除或更新資料時,請確定為 ObjectDataSource 集合或 UpdateParameters 集合中 DeleteParameters 控制項設定的參數名稱符合 select 方法所傳回的資料行名稱。

物件存留期

屬性所 SelectMethod 識別的方法可以是 Visual Basic) 方法中的實例方法或 static (Shared 。 如果是實例方法,每次呼叫 屬性所 SelectMethod 指定的方法時,都會建立並終結商務物件。 您可以在呼叫 屬性所 SelectMethod 指定的 方法之前,先處理 ObjectCreatedObjectCreating 事件以使用商務物件。 您也可以處理 ObjectDisposing 呼叫 屬性所 SelectMethod 指定之 方法之後所引發的事件。 如果商務物件實作 IDisposable 介面,則會 Dispose 在終結物件之前呼叫 方法。 如果在 Visual Basic) 中 (方法 static ,則永遠不會建立商務物件,而且您無法處理 ObjectCreatedObjectCreatingObjectDisposing 事件。 Shared

參數合併

參數會從這些來源新增至 SelectParameters 集合:

  • 以宣告方式從 SelectParameters 專案。

  • 以程式設計方式從 Selecting 方法。

首先,會新增 元素中列出的 SelectParameters 參數。 其次,會在 事件中 Selecting 以程式設計方式新增和移除參數,這會在執行 方法之前 Select 發生。 方法會在合併參數之後解析。 下一節會討論方法解析。

重要

您應該驗證您從用戶端收到的任何參數值。 執行時間只會將參數值取代為 SelectMethod 屬性。

方法解析

Select呼叫 方法時,來自資料繫結控制項的資料欄位、以宣告方式在 元素中 SelectParameters 建立的參數,以及事件處理常式中 Selecting 新增的參數都會合並。 (如需詳細資訊,請參閱上一節。) ObjectDataSource 控制項接著會嘗試尋找要呼叫的方法。 首先,它會尋找具有 屬性中所 SelectMethod 指定名稱的一或多個方法。 如果找不到相符專案, InvalidOperationException 則會擲回例外狀況。 如果找到相符專案,則會尋找相符的參數名稱。 例如,假設 屬性所 TypeName 指定的型別有兩個名為 SelectARecord 的方法。 其中一 SelectARecord 個參數為 ,另一個參數則有兩個 IDSelectARecord 參數, NameNumberSelectParameters如果集合只有一個名為 ID 的參數, SelectARecord 則只會 ID 呼叫具有 參數的方法。 無法檢查參數的類型,無法解析方法。 參數的順序並不重要。

DataObjectTypeName如果已設定 屬性,方法會以不同方式解析。 會 ObjectDataSource 尋找名稱在 屬性中指定的 SelectMethod 方法,該方法會採用 屬性中所 DataObjectTypeName 指定類型的一個參數。 在此情況下,參數的名稱並不重要。

適用於

另請參閱