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
個參數為 ,另一個參數則有兩個ID
SelectARecord
參數, Name
和 Number
。
SelectParameters如果集合只有一個名為 ID
的參數,SelectARecord
則只會ID
呼叫具有 參數的方法。 無法檢查參數的類型,無法解析方法。 參數的順序並不重要。
DataObjectTypeName如果已設定 屬性,方法會以不同方式解析。 會 ObjectDataSource 尋找名稱在 屬性中指定的 SelectMethod 方法,該方法會採用 屬性中所 DataObjectTypeName 指定類型的一個參數。 在此情況下,參數的名稱並不重要。