共用方式為


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 方法 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 指定類型的一個參數。 在此情況下,參數的名稱並不重要。

適用於

另請參閱