次の方法で共有


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 プロパティで識別されたメソッドによって使用されるパラメーターを格納している InsertMethod

属性

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

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

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

操作が 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、クラスの概要でObjectDataSource提供されている中間層オブジェクトに追加EmployeeLogicされ、実際のビジネス ロジックを大幅に書き換えることなく、Web シナリオでコントロールをより簡単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 必要があります。 パラメーター名では大文字と小文字が区別されます。 コントロールや DetailsView コントロールなどのGridViewパラメーターを提供するデータ バインド コントロールを使用する場合、コントロールは、ObjectDataSourceコレクションで明示的に指定されたすべてのパラメーターを、データ バインド コントロールによって提供されるパラメーターと自動的にマージします。 データ バインド コントロールは常に型として String パラメーターを指定し、メソッドシグネチャに数値型または日付型が含まれている場合は、コレクションに正しい型のパラメーターを InsertParameters 明示的に含める必要があるため、これは重要です。 それ以外の ObjectDataSource 場合、コントロールは、コレクション内のパラメーターによって定義されている型に従ってパラメーターのキャストを試みます。 詳細については、「 ObjectDataSource コントロールでのパラメーターの使用」を参照してください。

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

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

適用対象

こちらもご覧ください