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 フォーム ページの 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 DataTableの最初のDataSetが抽出され、DataViewが作成され、Select メソッドによって返されます。
Object オブジェクトは、1 要素 IEnumerable コレクションにラップされ、 Select メソッドによって返されます。

SelectMethod プロパティは、SelectMethod コントロールに関連付けられているObjectDataSourceView オブジェクトのObjectDataSource プロパティにデリゲートします。

ObjectDataSource クラスを使用してデータを削除または更新する場合は、ObjectDataSource コレクションまたは DeleteParameters コレクション内のUpdateParameters コントロールに対して構成されたパラメーター名が、select メソッドによって返される列名と一致していることを確認します。

オブジェクトの有効期間

SelectMethod プロパティで識別されるメソッドには、インスタンス メソッドまたはstatic (Visual Basic のShared) メソッドを指定できます。 インスタンス メソッドの場合、ビジネス オブジェクトは、 SelectMethod プロパティで指定されたメソッドが呼び出されるたびに作成され、破棄されます。 ObjectCreated プロパティで指定されたメソッドが呼び出される前に、ObjectCreatingイベントとSelectMethod イベントを処理してビジネス オブジェクトを操作できます。 ObjectDisposing プロパティで指定されたメソッドが呼び出された後に発生するSelectMethod イベントを処理することもできます。 ビジネス オブジェクトが IDisposable インターフェイスを実装する場合は、オブジェクトが破棄される前に Dispose メソッドが呼び出されます。 メソッドが static されている場合 (Visual Basic ではShared )、ビジネス オブジェクトは作成されません。 ObjectCreatedObjectCreating、および ObjectDisposing イベントを処理することはできません。

パラメーターのマージ

パラメーターは、次のソースから SelectParameters コレクションに追加されます。

  • SelectParameters要素から宣言的に。

  • Selecting メソッドからプログラムを使用します。

最初に、 SelectParameters 要素に一覧表示されているパラメーターが追加されます。 次に、Selecting メソッドが実行される前に発生するSelect イベントで、パラメーターがプログラムによって追加および削除されます。 このメソッドは、パラメーターがマージされた後に解決されます。 メソッドの解決については、次のセクションで説明します。

Important

クライアントから受け取るパラメーター値を検証する必要があります。 ランタイムは、パラメーター値を SelectMethod プロパティに置き換えるだけです。

メソッドの解決

Select メソッドが呼び出されると、データ バインド コントロールのデータ フィールド、SelectParameters要素で宣言によって作成されたパラメーター、および Selecting イベント ハンドラーに追加されたパラメーターがすべてマージされます。 (詳細については、前のセクションを参照してください)。 ObjectDataSource コントロールは、呼び出すメソッドの検索を試みます。 最初に、 SelectMethod プロパティで指定された名前を持つ 1 つ以上のメソッドを検索します。 一致するものが見つからない場合は、 InvalidOperationException 例外がスローされます。 一致が見つかった場合は、一致するパラメーター名が検索されます。 たとえば、 TypeName プロパティで指定された型に、 SelectARecordという名前の 2 つのメソッドがあるとします。 1 つの SelectARecord には 1 つのパラメーター、 ID、もう 1 つの SelectARecord には、 NameNumberの 2 つのパラメーターがあります。 SelectParameters コレクションに ID という名前のパラメーターが 1 つしかない場合は、SelectARecord パラメーターのみを持つ ID メソッドが呼び出されます。 パラメーターの型は、メソッドの解決ではチェックされません。 パラメーターの順序は関係ありません。

DataObjectTypeName プロパティが設定されている場合、メソッドは別の方法で解決されます。 ObjectDataSourceは、SelectMethod プロパティで指定された型の 1 つのパラメーターを受け取る、DataObjectTypeName プロパティで指定された名前を持つメソッドを検索します。 この場合、パラメーターの名前は関係ありません。

適用対象

こちらもご覧ください