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 に InsertParameters 対応する 1 つのパラメーターがコレクションに指定されています。 これは、ID がオブジェクトとしてBoundFieldコントロールのコレクションDetailsViewにRows表示されていても、コントロールに文字列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。
適用対象
こちらもご覧ください
.NET