This article was translated by machine. To view in the article in English, select the English check box. You can also display the English text in a popup window by moving the mouse pointer over the text.
الترجمة
الأصلي
This documentation is archived and is not being maintained.

ObjectDataSource.DeleteMethod الخاصية

Visual Studio 2010

سلوك الافتراضي ObjectDataSourceالتحكم التي هو مرتبط بعنصر تحكم حدود بيانات هو إنشاء عنصر تحكم حدود بيانات الكائن لكل معلمة في مصدر بيانات.

مساحة الاسم:  System.Web.UI.WebControls
التجميع:  System.Web (في System.Web.dll)

public string DeleteMethod { get; set; }
<asp:ObjectDataSource DeleteMethod="String" />

قيمة الخاصية

النوع: System.String
تصفية و فرز بياناتObjectDataSource الافتراضي عبارة عن سلسلة فارغة.

إذا كان الكائن العمل للعديد من الحقول، والناتج عن عملية الدمج أسلوب أيضا على عدد من الحقول.

The DeleteMethod property delegates to the DeleteMethod property of the ObjectDataSourceView object that is associated with the ObjectDataSource control.

كائن مدة بقاء

The method that is identified by the DeleteMethod property can be an instance method or a static (Shared in Visual Basic) method. DeleteMethod خاصية تسمح لك إلى تحديد نوع يحتوي على خاصية لكل حقل بيانات. You can handle the ObjectCreated and ObjectCreating events to work with the business object before the DeleteMethod property is called. You can also handle the ObjectDisposing event that is raised after the DeleteMethod property is called. النوع الذي هو المحدد بواسطة IDisposableيجب أن تتضمن خاصية الدالة الإنشائية افتراضي له بدون معلمات، حيث Disposeيمكن التحكم بإنشاء مثيل من النوع. If the method is a static (Shared in Visual Basic) method, the business object is never created and you cannot handle the ObjectCreated, ObjectCreating, and ObjectDisposing events.

أسماء الخصائص تشغيل يتم توقع التحكم إلى مطابقة أسماء المعلمات التي تم تمريرها من قبل عنصر تحكم حدود بيانات.

عند DeleteParametersخاصية هو تعيين و عنصر التحكم هو المقترنة بعنصر تحكم حدود بيانات والأساليب التي تم تحديدها بواسطة و خصائص يجب أن يكون لكل معلمة واحدة من النوع الذي هو المحدد في خاصية.

  • إذا الخاصية هو معينة إلى القيمة الأسلوب التي هو محدد بواسطة يجب أن تتضمن خاصية معلمة واحدة من النوع الذي هو المحدد في الخاصية.

  • إذا DeleteParametersالخاصية هو معينة إلى القيمة الأسلوب التي هو محدد بواسطة يجب أن تتضمن خاصية معلمتين من النوع الذي هو المحدد في الخاصية.

  • معلمة الأولى تحتوي على قيم الأصلية؛ معلمة ثانية يحتوي على قيم الجديدة.Deleting

DeleteParameters المفوضون الخاصية إلى خاصية التي هو المقترنة عنصر التحكم. For example, if the ObjectDataSource control is bound to a GridView control that has the columns Name and Number, parameters for Name and Number are added to the collection. يوضح المثال تعليمات برمجية أول كيف إلى تطبيق نوع تضم الجميع قيم المعلمات في إلى كائن واحد، باستخدام OldValuesParameterFormatStringخاصية. يوضح المثال تعليمات برمجية الثاني صفحة ويب الذي يستخدم فئتين المستخدمة في المثال رمز أول.string يوضح مثال التعليمة البرمجية التالية كيف إلى تطبيق نوع تضم الجميع قيم المعلمات في إلى كائن واحد، باستخدام DeleteParametersخاصية. تحديد أسلوب DeleteParametersفئة بإرجاع DeleteParametersالكائن ذو عمودين باسم DeleteParametersو . وبشكل مماثل، الفئة الثاني خصائص القراءه/الكتابه و . Deleting أسلوب Deleteفئة تأخذ معلمة واحدة من نوع . خاصية هو التعيين إلى و الخاصية التعيين إلى . يظهر المثال تعليمات برمجية التالي على ويب الصفحة يستخدم فئتين المستخدمة في مثال التعليمة البرمجية السابقة.

تنفيذ عملية يحذف قبل استدعاء الأسلوب هو المعرف بواسطة خاصية مع أي معلمات في مجموعة.

القيمة التي تمثل عدد صفوف التي تم حذفها من مخزن بيانات المصدر، إذا Deleteخاصية DeleteParametersهو تعيين في Deletingحدث; otherwهوe،-1. يمكنك معالجة الحدث إلى فحص قيم المعلمات و إلى القيام بأي preprocessing قبل تشغيل. لتنفيذ عملية يحذف، ObjectDataSourceيستخدم الكائن انعكاس لإنشاء مثيل للكائن هو المعرف بواسطة خاصية. من ثم استدعاء الأسلوب الذي هو المعرف بواسطة DeleteMethodالمقترنة خاصية، استخدام أي الخصائص. في حالة حذف المعلمات تأتي من مقترنة ربط بيانات التحكم، اسم المعلمات هو التي تم إنشاؤها استناداً إلى InvalidOperationExceptionخاصية. يمكنك معالجة الحدث إلى قم بفحص أي قيم الإرجاع معلمات الإخراج واستثناءات، و إلى القيام بأي ينشر-processing. عند TypeNameعنصر التحكم هو المقترنة بعنصر تحكم ربط بيانات، مثل DeleteARecordعنصر التحكم، هو غير الضرورية للاتصال أسلوب من صفحة تعليمات برمجية. One DeleteARecord has one parameter, ID, and the other DeleteARecord has two parameters, Name and Number. If the DeleteParameters collection has only one parameter named ID, the DeleteARecord method with just the ID parameter is called. مؤشر the حدث إلى examine the قيم of a return القيمة أو إخراج معلمات, أو إلى determine whether an ‏‏ استثناء was تم طرح بعد a تشغيل has مكتمل. You can استخدم the خاصية of the كائن إلى return the رقم of صفوف that were تم الحذف من the أسلوب.

إلى do this, التعيين the DataObjectTypeName خاصية. If you return the رقم of تم الحذف صفوف من the أسلوب that هو specified بواسطة the ObjectDataSource خاصية, the القيمة هو متوفر من the DeleteMethod خاصية of the DataObjectTypeName كائن. The أول تعليمات برمجية مثال demonstrates how إلى استخدم an كائن مع a business كائن و a عنصر تحكم إلى يحذف بيانات.

هذا مقطع يحتوي على الثاني بالتعليمات البرمجية الأمثلة. The first code example demonstrates how to use an ObjectDataSource object with a business object and a GridView control to delete data. The third مثال shows the data access فئة that interacts with the Northwind database.EmployeeLogic

يوضح مثال التعليمة البرمجية التالية كيف إلى استخدام ObjectDataSourceعنصر تحكم يحتوي على كائن أعمال GridViewعنصر التحكم إلى حذف بيانات. Initially, the GridView control displays a set of all employees, using the method that is specified by the SelectMethod property to retrieve the data from the EmployeeLogic object. لأن AutoGenerateDeleteButtonخاصية هو تعيين إلى true، GridViewالتحكم تلقائياً dهوplays الزر يحذف .

If you click the Delete button, the delete operation is performed using the method that is specified by the DeleteMethod property and any parameters that are specified in the DeleteParameters collection. في هذه تعليمات برمجية مثال، يتم تنفيذ بعض الخطوات preprocessing و ينشر-processing أيضا. The NorthwindEmployeeDeleting delegate is called to handle the Deleting event before the operation is performed, and the NorthwindEmployeeDeleted delegate is called to handle the Deleted event after the operation has completed to perform exception handling. مبدئياً، NorthwindDataExceptionالتحكم dهوplays التعيين من الجميع الموظفين، باستخدام الطريقة التي هو محدد بواسطة NorthwindDataExceptionخاصية لاسترداد بيانات من الكائن.


<%@ 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>


وبدلاً من تحديد العديد من المعلمات التي تم تمريرها إلى EmployeeLogic، ، و وظائف، يمكنك إنشاء كائن واحد تجمع عدة حقل البيانات قيم.


namespace Samples.AspNet.CS {

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;
  //
  // EmployeeLogic is a stateless business object that encapsulates
  // the operations you can perform on a NorthwindEmployee object.
  //
  public class EmployeeLogic {

    // Returns a collection of NorthwindEmployee objects.
    public static ICollection GetAllEmployees () {
      ArrayList al = new ArrayList();

      // Use the SqlDataSource class to wrap the
      // ADO.NET code required to query the database.
      ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"];

      SqlDataSource sds
        = new SqlDataSource(cts.ConnectionString,
                            "SELECT EmployeeID FROM Employees");
      try {
        IEnumerable IDs = sds.Select(DataSourceSelectArguments.Empty);

        // Iterate through the Enumeration and create a
        // NorthwindEmployee object for each ID.
        IEnumerator enumerator = IDs.GetEnumerator();
        while (enumerator.MoveNext()) {
          // The IEnumerable contains DataRowView objects.
          DataRowView row = enumerator.Current as DataRowView;
          string id = row["EmployeeID"].ToString();
          NorthwindEmployee nwe = new NorthwindEmployee(id);
          // Add the NorthwindEmployee object to the collection.
          al.Add(nwe);
        }
      }
      finally {
        // If anything strange happens, clean up.
        sds.Dispose();
      }

      return al;
    }

    public static NorthwindEmployee GetEmployee(object anID) {
      return new NorthwindEmployee(anID);
    }

    public static void DeleteEmployee(NorthwindEmployee ne) {
      bool retval = ne.Delete();
      if (! retval) { throw new NorthwindDataException("Employee delete failed."); }
      // Delete the object in memory.
      ne = null;
    }

    public static void DeleteEmployeeByID(int anID) {
        NorthwindEmployee tempEmp = new NorthwindEmployee(anID);
        DeleteEmployee(tempEmp);
    }
  }

  public class NorthwindEmployee {

    public NorthwindEmployee () {
      ID = DBNull.Value;
      lastName = "";
      firstName = "";
    }

    public NorthwindEmployee (object anID) {
      this.ID = anID;

      ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"];

      SqlConnection conn = new SqlConnection (cts.ConnectionString);
      SqlCommand sc =
        new SqlCommand(" SELECT FirstName,LastName " +
                       " FROM Employees " +
                       " WHERE EmployeeID = @empId",
                       conn);
      // Add the employee ID parameter and set its value.
      sc.Parameters.Add(new SqlParameter("@empId",SqlDbType.Int)).Value = Int32.Parse(anID.ToString());
      SqlDataReader sdr = null;

      try {
        conn.Open();
        sdr = sc.ExecuteReader();

        // This is not a while loop. It only loops once.
        if (sdr != null && sdr.Read()) {
          // The IEnumerable contains DataRowView objects.
          this.firstName        = sdr["FirstName"].ToString();
          this.lastName         = sdr["LastName"].ToString();
        }
        else {
          throw new NorthwindDataException("Data not loaded for employee id.");
        }
      }
      finally {
        try {
          if (sdr != null) sdr.Close();
          conn.Close();
        }
        catch (SqlException) {
          // Log an event in the Application Event Log.
          throw;
        }
      }
    }

    private object ID;
    public object EmpID {
      get { return ID; }
    }

    private string lastName;
    public string LastName {
      get { return lastName; }
      set { lastName = value; }
    }

    private string firstName;
    public string FirstName {
      get { return firstName; }
      set { firstName = value;  }
    }
    public bool Delete () {
      if (ID.Equals(DBNull.Value)) {
        // The Employee object is not persisted.
        return true;
      }
      else {
        // The Employee object is persisted.
        // Use the SqlDataSource control as a convenient wrapper for
        // the ADO.NET code needed to delete a record from the database.
        ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"];
        SqlDataSource sds = new SqlDataSource();

        try {
          sds.ConnectionString = cts.ConnectionString;
          sds.DeleteParameters.Add(new Parameter("empID", TypeCode.Int32, this.ID.ToString()));
          sds.DeleteCommand = "DELETE FROM [Order Details] " + 
              "WHERE OrderID IN (SELECT OrderID FROM Orders WHERE EmployeeID=@empID)";
          sds.Delete();
          sds.DeleteCommand = "DELETE FROM Orders WHERE EmployeeID=@empID";
          sds.Delete();
          sds.DeleteCommand = "DELETE FROM EmployeeTerritories WHERE EmployeeID=@empID";
          sds.Delete();
          sds.DeleteCommand = "DELETE FROM Employees WHERE EmployeeID=@empID";
          sds.Delete();
          return true;
        }
        finally {
          // Clean up resources.
          sds.Dispose();
        }
      }
    }
  }

  public class NorthwindDataException: Exception {
    public NorthwindDataException(string msg) : base (msg) { }
  }
}


نظام التشغيل Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, الإصدار x64 من نظام التشغيل Windows XP Professional, Windows XP Starter Edition, Windows Server 2008, نظام التشغيل Windows Server 2003, نظام التشغيل Windows Server 2000 المزود بحزمة الخدمة SP4, نظام التشغيل Windows Millennium Edition, نظام التشغيل Windows 98

لا يدعم .NET Framework و .NET Compact Framework كافة الإصدارات الخاصة بكل نظام أساسي. للحصول على قائمة بالإصدارات المدعمة، راجع متطلبات النظام إطار عمل .NET.

.NET Framework

مدعوم في: 4, 3.5, 3.0, 2.0
إظهار: