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 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會委派給SelectMethod與 ObjectDataSource 控件相關聯之 ObjectDataSourceView 對象的屬性。
當您使用 ObjectDataSource 類別來刪除或更新資料時,請確定為ObjectDataSource集合或UpdateParameters集合中DeleteParameters控件設定的參數名稱符合 select 方法所傳回的數據行名稱。
物件存留期
屬性所 SelectMethod 識別的方法可以是 Visual Basic) 方法中的實例方法或 static (Shared 。 如果是實例方法,每次呼叫 屬性所 SelectMethod 指定的方法時,都會建立並終結商業物件。 您可以在呼叫 屬性所SelectMethod指定的 方法之前,先處理 ObjectCreated 和 ObjectCreating 事件以使用商業物件。 您也可以處理 ObjectDisposing 呼叫 屬性所 SelectMethod 指定之 方法之後所引發的事件。 如果商業物件實作 IDisposable 介面,則會 Dispose 在終結物件之前呼叫 方法。 如果在 Visual Basic) 中 (方法static,則永遠不會建立商業物件,而且您無法處理 ObjectCreated、 ObjectCreating和 ObjectDisposing 事件。Shared
參數合併
參數會從這些來源新增至 SelectParameters 集合:
以宣告方式從
SelectParameters專案。以程序設計方式從
Selecting方法。
首先,會新增 元素中列出的 SelectParameters 參數。 其次,會在事件中 Selecting 以程序設計方式新增和移除參數,這會在執行 方法之前 Select 發生。 方法會在合併參數之後解析。 下一節會討論方法解析。
重要
您應該驗證您從用戶端收到的任何參數值。 運行時間只會將參數值取代為 SelectMethod 屬性。
方法解析
Select呼叫 方法時,來自數據綁定控件的數據欄位、以宣告方式在 元素中SelectParameters建立的參數,以及事件處理程式中Selecting新增的參數都會合併。 (如需詳細資訊,請參閱上一節。) ObjectDataSource 控件接著會嘗試尋找要呼叫的方法。 首先,它會尋找具有 屬性中所 SelectMethod 指定名稱的一或多個方法。 如果找不到相符專案, InvalidOperationException 則會擲回例外狀況。 如果找到相符專案,則會尋找相符的參數名稱。 例如,假設 屬性所 TypeName 指定的型別有兩個名為 SelectARecord的方法。 其中一SelectARecord個參數為 ,另一個參數則有兩個IDSelectARecord參數, Name 和 Number。
SelectParameters如果集合只有一個名為 ID的參數,SelectARecord則只會ID呼叫具有 參數的方法。 無法檢查參數的類型,無法解析方法。 參數的順序並不重要。
DataObjectTypeName如果已設定 屬性,方法會以不同方式解析。 會 ObjectDataSource 尋找名稱在 屬性中指定的 SelectMethod 方法,該方法會採用 屬性中所 DataObjectTypeName 指定類型的一個參數。 在此情況下,參數的名稱並不重要。