Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

ObjectDataSourceMethodEventArgs-Klasse

Stellt Daten für Inserting, Updatingund Deleting-Ereignis des ObjectDataSource-Steuerelements bereit.

Namespace:  System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)
public class ObjectDataSourceMethodEventArgs : CancelEventArgs

Der ObjectDataSourceMethodEventArgs-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeObjectDataSourceMethodEventArgsInitialisiert eine neue Instanz der ObjectDataSourceMethodEventArgs-Klasse mit der angegebenen Auflistung von Eingabeparameter.
Zum Seitenanfang
  NameBeschreibung
Öffentliche EigenschaftCancelRuft einen Wert ab, der angibt, ob das Ereignis abgebrochen werden soll, oder legt diesen fest. (Von CancelEventArgs geerbt.)
Öffentliche EigenschaftInputParametersRuft eine Auflistung ab, die Geschäftsobjektmethode und ihre Werte enthält.
Zum Seitenanfang
  NameBeschreibung
Öffentliche MethodeEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeGetHashCodeFungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

Die ObjectDataSourceMethodEventArgs-Klasse wird im OnSelectingim OnUpdatingim OnInsertingund OnDeleting-Methode verwendet, um den Zugriff auf den Eingabeparametern zu bieten, die auf Select, Update, Deleteund Methoden des InsertObjectDataSource-Steuerelements übergeben werden. Diese Parameter werden mithilfe der InputParameters-Eigenschaft zugegriffen wird. Indem Sie einen Delegaten hinzu, um Selectingzu behandeln, Updating, Insertingoder Deleting-Ereignis können Sie die Werte der Parameter zu überprüfen und alle zusätzlichen bearbeiten und ausführen, die eine Vorverarbeitung erforderlich ist. Alle Änderungen an den Parametern in diesem Wörterbuch beeinflussen, welche Methodenüberladung für den Vorgang aufgerufen wird. Wenn die DataObjectTypeNameObjectDataSource-Eigenschaft des Steuerelements festgelegt ist, können Sie die Datenobjekt von Eigenschaften für Elemente in diesem Wörterbuch nur ändern. Sie können keine Parameter hinzufügen oder entfernen. Weitere Informationen finden Sie unter Delete.

Das ObjectDataSource-Steuerelement macht viele Ereignisse verfügbar, die Sie behandeln können, um mit dem zugrunde liegenden Geschäftsobjekt in dessen Lebenszyklus zu verschiedenen Zeitpunkten zu arbeiten. In der folgenden Tabelle werden die Ereignisse und die zugehörigen EventArgs-Klassen und Ereignishandlerdelegaten auf.

Ereignis

EventArgs -Klasse

EventHandler-Delegat

ObjectCreating .

Tritt ein, unmittelbar bevor die Instanz des Geschäftsobjekts erstellt wird.

ObjectDataSourceEventArgs

ObjectDataSourceObjectEventHandler

ObjectCreated .

Tritt sofort auf, nachdem die Instanz des Geschäftsobjekts erstellt wird.

ObjectDataSourceEventArgs

ObjectDataSourceObjectEventHandler

Selecting .

Tritt ein, bevor die Daten abgerufen wird.

ObjectDataSourceSelectingEventArgs

ObjectDataSourceSelectingEventHandler

Inserting , Updatingund Deleting.

Wenden Sie sich ein, bevor eine Einfüge-, Aktualisierungs- oder Löschvorgang durchgeführt wird.

ObjectDataSourceMethodEventArgs

ObjectDataSourceMethodEventHandler

Selected .

Tritt ein, nachdem die Daten abgerufen wird.

ObjectDataSourceStatusEventArgs

ObjectDataSourceStatusEventHandler

Inserted , Updatedund Deleted.

Wenden Sie sich ein, nachdem die Einfüge-, Aktualisierungs- oder Löschvorgang abgeschlossen wurde.

ObjectDataSourceStatusEventArgs

ObjectDataSourceStatusEventHandler

ObjectDisposing .

Tritt ein, bevor ein Geschäftsobjekt zerstört wird.

ObjectDataSourceDisposingEventArgs

ObjectDataSourceDisposingEventHandler

Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Codebeispiel wird veranschaulicht, wie ein ObjectDataSource-Steuerelement zusammen mit einem Geschäftsobjekt und einem DetailsView-Steuerelement zum Einfügen von Daten verwendet wird. Im zweiten Codebeispiel wird ein Beispielgeschäftsobjekt der mittleren Ebene bereitgestellt, das im ersten Codebeispiel verwendet wird.

Im folgenden Codebeispiel wird veranschaulicht, wie ein ObjectDataSource-Steuerelement zusammen mit einem Geschäftsobjekt und einem DetailsView-Steuerelement zum Einfügen von Daten verwendet wird. DetailsView wird zunächst einen neuen NorthwindEmployee Datensatz zusammen mit einer automatisch generierten Einfügen Schaltfläche. Nachdem Sie eingeben, um Daten in die Felder DetailsView , klicken Sie auf die Schaltfläche Einfügen , und die InsertMethod-Eigenschaft gibt an, welche Methode die Insert Aktion ausführt.

In diesem Beispiel wird die UpdateEmployeeInfo-Methode verwendet, um eine Einfügung ausführen. Allerdings erfordert sie einen NorthwindEmployee-Parameter, die Daten eingefügt werden sollen. Aus diesem Grund ist die Auflistung von Zeichenfolgen, die die DetailsView-Steuerelement automatisch verwaltet nicht ausreichend. Der NorthwindEmployeeInserting Delegat ist ein ObjectDataSourceMethodEventHandler-Objekt, das das Inserting-Ereignis behandelt, und es Ihnen ermöglicht, den Eingabeparametern zu bearbeiten, bevor der Insert Vorgang fortgesetzt wird. Da die UpdateEmployeeInfo-Methode ein NorthwindEmployee-Objekt als Parameter erfordert, wird mit der Auflistung von Zeichenfolgen erstellt und der Auflistung hinzugefügt. InputParameters


<%@ 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 NorthwindEmployeeInserting(object source, ObjectDataSourceMethodEventArgs e)
{
  // The business object expects a custom type. Build it
  // and add it to the parameters collection.

  IDictionary paramsFromPage = e.InputParameters;

  NorthwindEmployee ne = new NorthwindEmployee();

  ne.FirstName  = paramsFromPage["FirstName"].ToString();
  ne.LastName   = paramsFromPage["LastName"].ToString();
  ne.Title      = paramsFromPage["Title"].ToString();
  ne.Courtesy   = paramsFromPage["Courtesy"].ToString();
  ne.Supervisor = Int32.Parse(paramsFromPage["Supervisor"].ToString());

  paramsFromPage.Clear();
  paramsFromPage.Add("ne", ne);
}

</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:detailsview
          id="DetailsView1"
          runat="server"
          autogenerateinsertbutton="True"
          datasourceid="ObjectDataSource1">
        </asp:detailsview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetEmployee"
          insertmethod="UpdateEmployeeInfo"
          oninserting="NorthwindEmployeeInserting"
          typename="Samples.AspNet.CS.EmployeeLogic"
          >
          <selectparameters>
            <asp:parameter name="anID" defaultvalue="-1" />
          </selectparameters>
        </asp:objectdatasource>

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


Im folgenden Codebeispiel wird ein Beispielgeschäftsobjekt der mittleren Ebene bereit, das im vorherigen Codebeispiel verwendet wird. Die folgende Liste beschreibt die zwei wichtigsten Klassen, die im Codebeispiel definiert sind:

  • Die EmployeeLogic-Klasse, die eine zustandslose Klasse ist, die Geschäftslogik kapselt.

  • Die NorthwindEmployee-Klasse, die eine Modellklasse ist, die nur die grundlegenden Funktionen enthält, die erforderlich ist, um Daten aus der Datenebene zu laden und beizubehalten.

Außerdem wird eine NorthwindDataException-Klasse als Hilfsmittel bereitgestellt.

Dieser Satz von Beispielen Traders-Datenbank Northwind verwendet die Klassen, die eine Beispiel wird die Datenbank mit Microsoft SQL Server und Microsoft Access verfügbar ist. Für ein vollständiges und funktionsfähiges Beispiel verwenden Sie diese Klassen, indem Sie sie im Verzeichnis App_Code unter dem Stammordner der Anwendung ablegen oder indem Sie sie zu kompilieren und die resultierende DLL im Verzeichnis Bin platzieren. Die UpdateEmployeeInfo-Methode wird nicht vollständig implementiert. Fügen Sie keine Daten in die Datenbank Northwind Traders-Datenbank ein, wenn Sie mit diesem Beispiel experimentieren.


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

      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) {
      if (anID.Equals("-1") ||
          anID.Equals(DBNull.Value) ) {
        return new NorthwindEmployee();
      }
      else {
        return new NorthwindEmployee(anID);
      }
    }

    public static void UpdateEmployeeInfo(NorthwindEmployee ne) {
      bool retval = ne.Save();
      if (! retval) { throw new NorthwindDataException("UpdateEmployee failed."); }
    }

    public static void DeleteEmployee(NorthwindEmployee ne) {
      bool retval = ne.Delete();
      if (! retval) { throw new NorthwindDataException("DeleteEmployee failed."); }
    }

    // And so on...
  }

  public class NorthwindEmployee {

    public NorthwindEmployee () {
      ID = DBNull.Value;
      lastName = "";
      firstName = "";
      title="";
      titleOfCourtesy = "";
      reportsTo = -1;
    }

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

      SqlConnection conn
        = new SqlConnection (ConfigurationManager.ConnectionStrings["NorthwindConnection"].ConnectionString);
      SqlCommand sc =
        new SqlCommand(" SELECT FirstName,LastName,Title,TitleOfCourtesy,ReportsTo " +
                       " 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();

        // Only loop once.
        if (sdr != null && sdr.Read()) {
          // The IEnumerable contains DataRowView objects.
          this.firstName        = sdr["FirstName"].ToString();
          this.lastName         = sdr["LastName"].ToString();
          this.title            = sdr["Title"].ToString();
          this.titleOfCourtesy  = sdr["TitleOfCourtesy"].ToString();
          if (! sdr.IsDBNull(4)) {
            this.reportsTo        = sdr.GetInt32(4);
          }
        }
        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 string EmpID {
      get { return ID.ToString();  }
    }

    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 string FullName {
      get { return FirstName + " " + LastName; }
    }

    private string title;
    public String Title {
      get { return title; }
      set { title = value; }
    }

    private string titleOfCourtesy;
    public string Courtesy {
      get { return titleOfCourtesy; }
      set { titleOfCourtesy = value; }
    }

    private int    reportsTo;
    public int Supervisor {
      get { return reportsTo; }
      set { reportsTo = value; }
    }

    public bool Save () {
      // Implement persistence logic.
      return true;
    }

    public bool Delete () {
      // Implement delete logic.
      return true;
    }
  }

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


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
© 2013 Microsoft. Alle Rechte vorbehalten.