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.

ObjectDataSourceStatusEventArgs الفئة

Visual Studio 2010

Provides data for the Selected, Inserted, Updated, and Deleted events of the ObjectDataSource control.

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

public class ObjectDataSourceStatusEventArgs : EventArgs

The ObjectDataSourceStatusEventArgs class is used in the OnSelected, OnUpdated, OnInserted, and OnDeleted methods to provide access to output parameters, return values, and exceptions that are thrown by the method that is called by the ObjectDataSource control. These are accessed by the OutputParameters, ReturnValue, and Exception properties, respectively. By adding a delegate to handle the Selected, Updated, Inserted, or Deleted events, you can examine this data and perform any additional post processing that is required.

ObjectDataSource عنصر تحكم الكشف عن العديد من الأحداث التي يمكنك معالجة إلى العمل مع كائن الأعمال الأساسية في أوقات مختلفة في دورة الحياة الخاصة به. يسرد الجدول التالي الأحداث و إقران EventArgsالفئات و معالج الأحداث المفوضون.




ObjectCreating .

يحدث مباشرة قبل المثيل لكائن الأعمال هو التي تم إنشاؤها.



ObjectCreated .

مباشرة بعد المثيل لكائن الأعمال هو التي تم إنشاؤها.



Selecting .

يحدث قبل بيانات هو التي تم استردادها.



Inserting ، Updating و Deleting

قبل إدراج أو تحديث أو عملية الحذف هو تنفيذه.



Selected .

بعد بيانات هو التي تم استردادها.



Inserted ، Updated و Deleted

بعد إدراج أو تحديث عملية الحذف هو إكمال.



ObjectDisposing .

يحدث قبل كائن أعمال هو إتلافه.



هذا مقطع يحتوي على الثاني بالتعليمات البرمجية الأمثلة. The first code example demonstrates how to use an ObjectDataSource control with a business object and a GridView control to delete data. استخدام خاصية للتحكم في الالمظهر تذييل الصفحة المقطع في الكائن.

يوضح مثال التعليمة البرمجية التالية كيف إلى استخدام ObjectDataSourceعنصر تحكم يحتوي على كائن أعمال GridViewعنصر التحكم إلى حذف بيانات. GridView مبدئياً dهوplays التعيين من الجميع الموظفين، باستخدام الطريقة التي هو محدد بواسطة SelectMethodخاصية لاسترداد بيانات من EmployeeLogicالكائن. لأن AutoGenerateDeleteButtonخاصية هو تعيين إلى true، GridViewالتحكم تلقائياً dهوplays الزر يحذف .

إذا قمت بالنقر فوق يحذف زر، Deleteإجراء هو تنفيذ باستخدام الأسلوب التي هو محدد بواسطة DeleteMethodخاصية أو أي معلمات محددة في DeleteParametersمجموعة. A dictionary of صف-المفتاح قيم for the records إلى تحديث.DeleteParameters This is because although the ID is included in the Columns collection as a BoundField object, it will be passed as a string to the ObjectDataSource control. By adding it explicitly to the DeleteParameters collection with a Type property set to the Int32 value, it will pass correctly by the ObjectDataSource to the method as an integer, rather than as string.

في هذه تعليمات برمجية مثال، يتم تنفيذ بعض الخطوات preprocessing و ينشر-processing أيضا. The NorthwindEmployeeDeleting delegate is called to handle the Deleting event before the Delete action is performed, and the NorthwindEmployeeDeleted delegate is called to handle the Deleted event after the Delete action has completed, to handle any exceptions that might have occurred. The NorthwindEmployeeDeleted delegate accesses possible exceptions that are thrown by the business object that is using the ObjectDataSourceStatusEventArgs object. في ترتيب هو سبيل المثال، إذا NorthwindDataExceptionهو طرح، هو التي تمت معالجتها بواسطة th هو المفوض.

<%@ 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"
<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.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;

<html xmlns="" >
    <title>ObjectDataSource - C# Example</title>
    <form id="Form1" method="post" runat="server">

            <asp:boundfield headertext="EmpID" datafield="EmpID" />
            <asp:boundfield headertext="First Name" datafield="FirstName" />
            <asp:boundfield headertext="Last Name" datafield="LastName" />

            <asp:parameter name="EmpID" type="Int32" />

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


الكائن الذي يمثل خلية إلى يعيد تعيين المعاملة. The وحدة التعيين that was retrieved.

  • Retrieves the المصدر of the استعلام سياق.EmployeeLogic

  • The الحالي استعلام سياق.NorthwindEmployee

Gets أو sets the الحالي بيانات سياق.NorthwindDataException

The الحالي بيانات سياق. -مطبقة كائن الذي يحتوي على القالب لعرض عنصر بيانات في . Gets the نوع of the بيانات سياق. استعادة المحفوظة مسبقاً عرض الحالة لعرض مصدر البيانات.UpdateEmployeeInfo

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.
      finally {
        // If anything strange happens, clean up.

      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);

  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",
      // 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 {
        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();
        catch (SqlException) {
          // Log an event in the Application Event Log.

    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.DeleteCommand = "DELETE FROM Orders WHERE EmployeeID=@empID";
          sds.DeleteCommand = "DELETE FROM EmployeeTerritories WHERE EmployeeID=@empID";
          sds.DeleteCommand = "DELETE FROM Employees WHERE EmployeeID=@empID";
          return true;
        finally {
          // Clean up resources.

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


يتم تأمين العملية الجزئية لأي عضو عمومي ثابت (مشترك في Visual Basic) من هذا النوع. لن يتم ضمان تأمين العملية الجزئية لأي عضو مثيل.

نظام التشغيل 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