ObjectDataSource.InsertParameters プロパティ

定義

InsertMethod プロパティによって使用されるパラメーターを格納するパラメーター コレクションを取得します。

public:
 property System::Web::UI::WebControls::ParameterCollection ^ InsertParameters { System::Web::UI::WebControls::ParameterCollection ^ get(); };
[System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)]
public System.Web.UI.WebControls.ParameterCollection InsertParameters { get; }
[<System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)>]
member this.InsertParameters : System.Web.UI.WebControls.ParameterCollection
Public ReadOnly Property InsertParameters As ParameterCollection

プロパティ値

ParameterCollection

ParameterCollection プロパティで識別されたメソッドによって使用されるパラメーターを格納している InsertMethod

属性

このセクションには、2 つのコード例が含まれています。 最初のコード例では、ビジネス オブジェクトとコントロールでオブジェクトを ObjectDataSource 使用してデータを DetailsView 挿入する方法を示します。 2 番目のコード例では、最初の Insert コード例で使用されるメソッドの実装例を示します。

次のコード例は、ビジネス オブジェクトとコントロールを ObjectDataSource 使用してデータを挿入する方法を DetailsView 示しています。 最初はDetailsView、自動的に生成された [挿入] ボタンと共に、新しいNorthwindEmployeeレコードのデータを入力できるテキスト ボックスが表示されます。 コントロールの DetailsView フィールドにデータを入力したら、[ 挿入 ] ボタンをクリックします。 このプロパティは InsertMethod 、挿入操作を実行するメソッドを識別します。

[ 挿入 ] ボタンをクリックすると、プロパティで InsertMethod 指定されたメソッドと、コレクションに指定されたすべてのパラメーターを使用して操作が InsertParameters 実行されます。 このコード例では、スーパーバイザーの ID に対応する 1 つのパラメーターがコレクションに InsertParameters 指定されています。 これは、ID がオブジェクトとしてBoundFieldコントロールのRowsコレクションDetailsViewに表示されていても、コントロールに文字列ObjectDataSourceとして渡されるためです。 プロパティを値にInsertParameters設定してコレクションTypeに明示的に追加することで、文字列としてInt32ではなく、メソッドにObjectDataSourceInt32しく渡されます。

操作が Insert 実行されると、プロパティによって InsertMethod 識別されるメソッドが呼び出されます。 オブジェクトのメソッドに Insert パラメーターを含むメソッド シグネチャがある場合、コレクションには、メソッドが InsertParameters 正常に完了するために、メソッド シグネチャ パラメーターと一致する名前を持つパラメーターが Insert 含まれている必要があります。

重要

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

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Import namespace="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:detailsview
          id="DetailsView1"
          runat="server"
          autogenerateinsertbutton="True"
          autogeneraterows="false"
          datasourceid="ObjectDataSource1"
          defaultmode="Insert" >
          <fields>
            <asp:BoundField headertext="FirstName" datafield="FirstName" />
            <asp:BoundField headertext="LastName"   datafield="LastName" />
            <asp:BoundField headertext="Title"      datafield="Title" />
            <asp:BoundField headertext="Courtesy"   datafield="Courtesy" />
            <asp:BoundField headertext="Supervisor" datafield="Supervisor" />
          </fields>
        </asp:detailsview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetEmployee"
          insertmethod="InsertNewEmployeeWrapper"
          typename="Samples.AspNet.CS.EmployeeLogic" >
          <selectparameters>
            <asp:parameter name="anID" defaultvalue="-1" />
          </selectparameters>
          <insertparameters>
            <asp:parameter name="Supervisor" type="Int32" />
          </insertparameters>
        </asp:objectdatasource>

    </form>
  </body>
</html>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %>
<%@ Import namespace="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 - VB Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:detailsview
          id="DetailsView1"
          runat="server"
          autogenerateinsertbutton="True"
          autogeneraterows="false"
          datasourceid="ObjectDataSource1"
          defaultmode="Insert" >
          <fields>
            <asp:BoundField headertext="FirstName" datafield="FirstName" />
            <asp:BoundField headertext="LastName"   datafield="LastName" />
            <asp:BoundField headertext="Title"      datafield="Title" />
            <asp:BoundField headertext="Courtesy"   datafield="Courtesy" />
            <asp:BoundField headertext="Supervisor" datafield="Supervisor" />
          </fields>
        </asp:detailsview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetEmployee"
          insertmethod="InsertNewEmployeeWrapper"
          typename="Samples.AspNet.VB.EmployeeLogic" >
          <selectparameters>
            <asp:parameter name="anID" defaultvalue="-1" />
          </selectparameters>
          <insertparameters>
            <asp:parameter name="Supervisor" type="Int32" />
          </insertparameters>
        </asp:objectdatasource>

    </form>
  </body>
</html>

次のコード例では、前のコード例で Insert 使用するメソッドの実装例を示します。 メソッドは InsertNewEmployeeWrapper 、実際の EmployeeLogic ビジネス ロジックを大幅に書き換えることなく、Web シナリオで ObjectDataSource コントロールをより簡単 ObjectDataSource に操作できるように、クラスの概要で提供される中間層オブジェクトに追加されます。

この例を実行するには、クラスの概要に NorthwindEmployee 記載されているクラスが ObjectDataSource 必要です。 この例では、パラメーターを使用して新しいデータベース レコードの ObjectDataSource データを取得するビジネス オブジェクト メソッドに接続する方法のみを示します。 この例では、データベースにレコードを追加しません。これは、クラスのメソッドにデータベースをNorthwindEmployee更新するコードが含まれていないためですSave

// This InsertNewEmployeeWrapper method is a wrapper method that enables
// the use of ObjectDataSource and InsertParameters, without
// substantially rewriting the true implementation for the NorthwindEmployee
// or the EmployeeLogic objects.
//
// The parameters to the method must be named the same as the
// DataControlFields used by the GridView or DetailsView controls.
public static void InsertNewEmployeeWrapper (string FirstName,
                                             string LastName,
                                             string Title,
                                             string Courtesy,
                                             int    Supervisor)
{
  // Build the NorthwindEmployee object and
  // call the true  implementation.
  NorthwindEmployee tempEmployee = new NorthwindEmployee();

  tempEmployee.FirstName  = FirstName;
  tempEmployee.LastName   = LastName;
  tempEmployee.Title      = Title;
  tempEmployee.Courtesy   = Courtesy;
  tempEmployee.Supervisor = Supervisor;

  // Call the true implementation.
  InsertNewEmployee(tempEmployee);
}

public static void InsertNewEmployee(NorthwindEmployee ne) {
  bool retval = ne.Save();
  if (! retval) { throw new NorthwindDataException("InsertNewEmployee failed."); }
}
' This InsertNewEmployeeWrapper method is a wrapper method that enables
' the use of ObjectDataSource and InsertParameters, without
' substantially rewriting the true implementation for the NorthwindEmployee
' or the EmployeeLogic objects.
'
' The parameters to the method must be named the same as the
' DataControlFields used by the GridView or DetailsView controls.
Public Shared Sub InsertNewEmployeeWrapper(FirstName As String, LastName As String, Title As String, Courtesy As String, Supervisor As Integer)
   ' Build the NorthwindEmployee object and
   ' call the true  implementation.
   Dim tempEmployee As New NorthwindEmployee()

   tempEmployee.FirstName = FirstName
   tempEmployee.LastName = LastName
   tempEmployee.Title = Title
   tempEmployee.Courtesy = Courtesy
   tempEmployee.Supervisor = Supervisor

   ' Call the true implementation.
   InsertNewEmployee(tempEmployee)
End Sub


Public Shared Sub InsertNewEmployee(ne As NorthwindEmployee)
   Dim retval As Boolean = ne.Save()
   If Not retval Then
      Throw New NorthwindDataException("InsertNewEmployee failed.")
   End If
End Sub

注釈

コレクションに含まれるパラメーターの名前と型は、プロパティシグネチャ内 InsertParameters のパラメーターの名前と型と一致する InsertMethod 必要があります。 パラメーター名では大文字と小文字が区別されます。 コントロールやコントロールなどのパラメーターを提供するデータ バインド コントロールをGridViewDetailsView操作すると、コレクション内で明示的に指定されたすべてのパラメーターが、ObjectDataSourceデータ バインド コントロールによって提供されるパラメーターと自動的にマージされます。 これは重要です。データ バインド コントロールは常にパラメーターを型として String 指定し、メソッドシグネチャに数値型または日付型が含まれている場合は、正しい型のパラメーターを InsertParameters コレクションに明示的に含める必要があります。 それ以外の ObjectDataSource 場合、コントロールは、コレクション内のパラメーターによって定義されている型に従ってパラメーターをキャストしようとします。 詳細については、「 ObjectDataSource コントロールでのパラメーターの使用」を参照してください。

このプロパティは InsertParameters 、コントロールに InsertParameters 関連付けられているプロパティに ObjectDataSourceView 含まれるプロパティを取得します ObjectDataSource

パラメーターのマージ、オブジェクトの有効期間、およびメソッドの解決の詳細については、次を参照してください InsertMethod

適用対象

こちらもご覧ください