Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

ObjectDataSource.Updating-Ereignis

 

Veröffentlicht: Oktober 2016

Tritt ein, bevor ein Update Vorgang.

Namespace:   System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)

public event ObjectDataSourceMethodEventHandler Updating

Behandeln der Updating Ereignis, um zusätzliche Initialisierung auszuführen, die spezifisch für Ihre Anwendung, und die Werte der Parameter zu überprüfen, oder So ändern Sie die Werte der Parameter vor der ObjectDataSource -Steuerelement den Aktualisierungsvorgang ausführt. Die Parameter sind verfügbar, als eine IDictionary -Auflistung, die von zugegriffen wird die InputParameters -Eigenschaft, die von verfügbar gemacht wird die ObjectDataSourceMethodEventArgs Objekt.

Weitere Informationen zur Behandlung von Ereignissen finden Sie unter NIB: Behandeln von Ereignissen.

Die folgenden drei Beispiele zeigen eine Webseite, eine Code-Behind-Seitenklasse und eine Datenzugriffsklasse, mit denen Benutzer abrufen und Aktualisieren von Datensätzen in der Employees-Tabelle in der Northwind-Datenbank.

Das erste Beispiel zeigt eine Webseite, die zwei ObjectDataSource -Steuerelemente, ein DropDownList -Steuerelement und ein DetailsView Steuerelement. Die erste ObjectDataSource Steuerelement und die DropDownList Steuerelement abrufen und Anzeigen von Mitarbeiternamen aus der Datenbank verwendet werden. Die zweite ObjectDataSource Steuerelement und die DetailsView Steuerelement dienen zum Abrufen, anzeigen und ändern die Daten aus der Employee-Datensatz, die vom Benutzer ausgewählt wird.

<form id="Form1" method="post" runat="server">

    <asp:objectdatasource
      ID="ObjectDataSource1"
      runat="server"
      SelectMethod="GetFullNamesAndIDs"
      TypeName="Samples.AspNet.CS.EmployeeLogic" />

    <p>
    <asp:dropdownlist
      ID="DropDownList1"
      runat="server" 
      DataSourceID="ObjectDataSource1"
      DataTextField="FullName"
      DataValueField="EmployeeID" 
      AutoPostBack="True" 
      AppendDataBoundItems="true">
        <asp:ListItem Text="Select One" Value=""></asp:ListItem>
    </asp:dropdownlist>
    </p>

    <asp:objectdatasource
      ID="ObjectDataSource2"
      runat="server"
      SelectMethod="GetEmployee"
      UpdateMethod="UpdateEmployeeAddress"
      OnUpdating="EmployeeUpdating"
      OnSelected="EmployeeSelected"
      TypeName="Samples.AspNet.CS.EmployeeLogic" >
      <SelectParameters>
        <asp:ControlParameter ControlID="DropDownList1" DefaultValue="-1" Name="empID" />
      </SelectParameters>
    </asp:objectdatasource>

    <asp:DetailsView
        ID="DetailsView1"
        runat="server"
        DataSourceID="ObjectDataSource2" 
        AutoGenerateRows="false"
        AutoGenerateEditButton="true">  
        <Fields>
            <asp:BoundField HeaderText="Address" DataField="Address" />
            <asp:BoundField HeaderText="City" DataField="City" />
            <asp:BoundField HeaderText="Postal Code" DataField="PostalCode" />
        </Fields>  
    </asp:DetailsView>

</form>

Das zweite Beispiel zeigt den Handler für die Selected und Updating Ereignisse. Der Selected -Ereignishandler serialisiert das Objekt, das Daten enthält, die aus der Employee-Tabelle abgerufen wurde. Das serialisierte Objekt wird im Ansichtszustand gespeichert. Der Updating -Ereignishandler deserialisiert das Objekt im Ansichtszustand, das die ursprünglichen Daten für den Datensatz enthält, die aktualisiert wird. Das Objekt, das die ursprünglichen Daten enthält, wird als Parameter an die Update-Methode übergeben. Die ursprünglichen Daten müssen an die Datenbank übergeben werden, damit es verwendet werden kann, zu überprüfen, ob die Daten von einem anderen Prozess geändert wurden.

public void EmployeeUpdating(object source, ObjectDataSourceMethodEventArgs e)
{
    DataContractSerializer dcs = new DataContractSerializer(typeof(Employee));

    String xmlData = ViewState["OriginalEmployee"].ToString();
    XmlReader reader = XmlReader.Create(new StringReader(xmlData));
    Employee originalEmployee = (Employee)dcs.ReadObject(reader);
    reader.Close();

    e.InputParameters.Add("originalEmployee", originalEmployee);
}

public void EmployeeSelected(object source, ObjectDataSourceStatusEventArgs e)
{
    if (e.ReturnValue != null)
    {
        DataContractSerializer dcs = new DataContractSerializer(typeof(Employee));
        StringBuilder sb = new StringBuilder();
        XmlWriter writer = XmlWriter.Create(sb);
        dcs.WriteObject(writer, e.ReturnValue);
        writer.Close();

        ViewState["OriginalEmployee"] = sb.ToString();
    }
}

Das dritte Beispiel zeigt die Daten-Klasse, die mit der Datenbank Northwind interagiert. Die Klasse verwendet LINQ zum Abfragen und Aktualisieren der Employees-Tabelle. Das Beispiel erfordert eine LINQ to SQL-Klasse, die den Northwind-Datenbank und die Tabelle "Employees" darstellt. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von LINQ to SQL-Klassen in einem Webprojekt.

public class EmployeeLogic
{
    public static Array GetFullNamesAndIDs()
    {
        NorthwindDataContext ndc = new NorthwindDataContext();

        var employeeQuery =
            from e in ndc.Employees
            orderby e.LastName
            select new { FullName = e.FirstName + " " + e.LastName, EmployeeID = e.EmployeeID };

        return employeeQuery.ToArray();
    }

    public static Employee GetEmployee(int empID)
    {
        if (empID < 0)
        {
            return null;
        }
        else
        {
            NorthwindDataContext ndc = new NorthwindDataContext();
            var employeeQuery =
                from e in ndc.Employees
                where e.EmployeeID == empID
                select e;

            return employeeQuery.Single();
        }
    }

    public static void UpdateEmployeeAddress(Employee originalEmployee, string address, string city, string postalcode)
    {
        NorthwindDataContext ndc = new NorthwindDataContext();
        ndc.Employees.Attach(originalEmployee, false);
        originalEmployee.Address = address;
        originalEmployee.City = city;
        originalEmployee.PostalCode = postalcode;
        ndc.SubmitChanges();
    }
}

.NET Framework
Verfügbar seit 2.0
Zurück zum Anfang
Anzeigen: