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 が使用するメソッドまたは関数の名前を表す文字列。 既定値は、空の文字列 ("") です。

次のコード例は、コントロールがGridViewWeb Forms ページでコントロールをObjectDataSource使用してデータを表示する方法を示しています。 は ObjectDataSource 、部分的または完全修飾クラス名をそのプロパティと、その TypeName プロパティを使用してデータを取得するために呼び出されるメソッドを SelectMethod 識別します。 実行時に オブジェクトが作成され、リフレクションを使用して メソッドが呼び出されます。 コントロールはGridView、 プロパティで指定された メソッドによって返されるコレクションをSelectMethod列挙IEnumerableし、データを表示します。

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

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

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

オブジェクトの有効期間

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

パラメーターのマージ

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

  • 要素から宣言的に SelectParameters

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

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

重要

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

メソッドの解決

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

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

適用対象

こちらもご覧ください