ObjectDataSource.InsertParameters プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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 に対応する 1 つのパラメーターがコレクションに InsertParameters 指定されています。 これは、ID がオブジェクトとしてBoundFieldコントロールのRowsコレクションDetailsViewに表示されていても、コントロールに文字列ObjectDataSourceとして渡されるためです。 プロパティを値にInsertParameters設定してコレクションTypeに明示的に追加することで、文字列としてInt32ではなく、メソッドにObjectDataSource正Int32しく渡されます。
操作が 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。