次の方法で共有


ObjectDataSourceView.DeleteMethod プロパティ

定義

データを削除するために ObjectDataSourceView オブジェクトが呼び出すメソッドまたは関数の名前を取得または設定します。

public:
 property System::String ^ DeleteMethod { System::String ^ get(); void set(System::String ^ value); };
public string DeleteMethod { get; set; }
member this.DeleteMethod : string with get, set
Public Property DeleteMethod As String

プロパティ値

データを削除するために ObjectDataSourceView が使用するメソッドまたは関数の名前を表す文字列。 既定値は、空の文字列 ("") です。

次のコード例では、ビジネス オブジェクトとコントロールでコントロールを ObjectDataSource 使用してデータを GridView 削除する方法を示します。 は GridView 、プロパティで SelectMethod 指定された メソッドを使用してオブジェクトからデータを取得する、すべての従業員のセットを最初に EmployeeLogic 表示します。 プロパティが AutoGenerateDeleteButtontrue設定されているため、コントロールは GridView 自動的に [削除 ] ボタンを表示します。

[削除] ボタンをクリックすると、 Delete プロパティで指定されたメソッドと、コレクションにDeleteMethod指定されているパラメーターを使用して操作がDeleteParameters実行されます。 このコード例では、いくつかの前処理と後処理の手順も実行されます。 デリゲートはNorthwindEmployeeDeleting、操作が実行される前にイベントをDeleteDeleting処理するために呼び出されNorthwindEmployeeDeleted、デリゲートは、操作の完了後にイベントをDeletedDelete処理して例外処理を実行するために呼び出されます。 この例では、 がスローされた場合 NorthwindDataException 、このデリゲートによって処理されます。

このコード例で使用する EmployeeLogic 中間層ビジネス オブジェクトの実装を調べるには、 を参照してください ObjectDataSourceStatusEventArgs

<%@ 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">
<script runat="server">
private void NorthwindEmployeeDeleting(object source, ObjectDataSourceMethodEventArgs e)
{
  // The GridView passes the ID of the employee
  // to be deleted. However, the buisiness object, EmployeeLogic,
  // requires a NorthwindEmployee parameter, named "ne". Create
  // it now and add it to the parameters collection.
  IDictionary paramsFromPage = e.InputParameters;
  if (paramsFromPage["EmpID"] != null) {
    NorthwindEmployee ne
      = new NorthwindEmployee( Int32.Parse(paramsFromPage["EmpID"].ToString()));
    // Remove the old EmpID parameter.
    paramsFromPage.Clear();
    paramsFromPage.Add("ne", ne);
  }
}

private void NorthwindEmployeeDeleted(object source, ObjectDataSourceStatusEventArgs e)
{
  // Handle the Exception if it is a NorthwindDataException
  if (e.Exception != null)
  {

    // Handle the specific exception type. The ObjectDataSource wraps
    // any Exceptions in a TargetInvokationException wrapper, so
    // check the InnerException property for expected Exception types.
    if (e.Exception.InnerException is NorthwindDataException)
    {
      Label1.Text = e.Exception.InnerException.Message;
      // Because the exception is handled, there is
      // no reason to throw it.
      e.ExceptionHandled = true;
    }
  }
}

</script>
<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"
          autogeneratedeletebutton="true"
          autogeneratecolumns="false"
          datakeynames="EmpID">
          <columns>
            <asp:boundfield headertext="EmpID" datafield="EmpID" />
            <asp:boundfield headertext="First Name" datafield="FirstName" />
            <asp:boundfield headertext="Last Name" datafield="LastName" />
          </columns>
        </asp:gridview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetAllEmployees"
          deletemethod="DeleteEmployee"
          ondeleting="NorthwindEmployeeDeleting"
          ondeleted="NorthwindEmployeeDeleted"
          typename="Samples.AspNet.CS.EmployeeLogic">
          <deleteparameters>
            <asp:parameter name="EmpID" type="Int32" />
          </deleteparameters>
        </asp:objectdatasource>

        <asp:label id="Label1" runat="server" />

    </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">
<script runat="server">
' Called before a Delete operation.
    Private Sub NorthwindEmployeeDeleting(ByVal source As Object, ByVal e As ObjectDataSourceMethodEventArgs)

        ' The GridView passes the ID of the employee
        ' to be deleted. However, the business object, EmployeeLogic,
        ' requires a NorthwindEmployee parameter, named "ne". Create
        ' it now and add it to the parameters collection.
        Dim paramsFromPage As IDictionary = e.InputParameters
  
        If Not paramsFromPage("EmpID") Is Nothing Then
    
            Dim ne As New NorthwindEmployee(paramsFromPage("EmpID").ToString())
            ' Remove the old EmpID parameter.
            paramsFromPage.Clear()
            paramsFromPage.Add("ne", ne)
    
    
        End If
    End Sub ' NorthwindEmployeeDeleting

    ' Called after a Delete operation.
    Private Sub NorthwindEmployeeDeleted(ByVal source As Object, ByVal e As ObjectDataSourceStatusEventArgs)
        ' Handle the Exception if it is a NorthwindDataException.
        If Not e.Exception Is Nothing Then

            ' Handle the specific exception type. The ObjectDataSource wraps
            ' any Exceptions in a TargetInvokationException wrapper, so
            ' check the InnerException property for the expected Exception types.
            If e.Exception.InnerException.GetType().Equals(GetType(NorthwindDataException)) Then

                Label1.Text = e.Exception.InnerException.Message
                ' Because the exception is handled, there is
                ' no reason to throw it.
                e.ExceptionHandled = True
      
            End If
        End If
    End Sub ' NorthwindEmployeeDeleted
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - VB Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:gridview
          id="GridView1"
          runat="server"
          datasourceid="ObjectDataSource1"
          autogeneratedeletebutton="true"
          autogeneratecolumns="false"
          datakeynames="EmpID">
          <columns>
            <asp:boundfield headertext="EmpID" datafield="EmpID" />
            <asp:boundfield headertext="First Name" datafield="FirstName" />
            <asp:boundfield headertext="Last Name" datafield="LastName" />
          </columns>
        </asp:gridview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetAllEmployees"
          deletemethod="DeleteEmployee"
          ondeleting="NorthwindEmployeeDeleting"
          ondeleted="NorthwindEmployeeDeleted"
          typename="Samples.AspNet.VB.EmployeeLogic">
          <deleteparameters>
            <asp:parameter name="EmpID" type="Int32" />
          </deleteparameters>
        </asp:objectdatasource>

        <asp:label id="Label1" runat="server" />

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

注釈

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

コントロールが操作するビジネス オブジェクトが ObjectDataSource 同じ名前 (メソッド オーバーロード) を持つ複数のメソッドまたは関数を実装している場合、データ ソース コントロールは、コレクション内 DeleteParameters のパラメーターを含む一連の条件に従って正しいメソッドを呼び出そうとします。 コレクション内のパラメーターが DeleteParameters メソッド シグネチャの DeleteMethod パラメーターと一致しない場合、データ ソースは例外をスローします。

プロパティの DeleteMethod 値はビュー ステートに格納されます。

詳細については、「DeleteMethod」を参照してください。

適用対象

こちらもご覧ください