(0) exportieren Drucken
Alle erweitern

ObjectDataSource.Updating-Ereignis

Aktualisiert: November 2007

Tritt vor einem Update-Vorgang ein.

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

public event ObjectDataSourceMethodEventHandler Updating
/** @event */
public void add_Updating (ObjectDataSourceMethodEventHandler value)
/** @event */
public void remove_Updating (ObjectDataSourceMethodEventHandler value)

JScript unterstützt keine Ereignisse.
<asp:ObjectDataSource OnUpdating="ObjectDataSourceMethodEventHandler" />

Behandeln Sie das Updating-Ereignis, um eine zusätzliche, anwendungsspezifische Initialisierung auszuführen und die Werte von Parametern zu überprüfen, oder um die Parameterwerte zu ändern, bevor das ObjectDataSource-Steuerelement den Aktualisierungsvorgang ausführt. Die Parameter sind als IDictionary-Auflistung verfügbar, auf die über die InputParameters-Eigenschaft zugegriffen wird, die wiederum durch das ObjectDataSourceMethodEventArgs-Objekt verfügbar gemacht wird.

Weitere Informationen über die Behandlung von Ereignissen finden Sie unter Behandeln von Ereignissen.

In den folgenden drei Beispielen werden eine Webseite, eine Code-Behind-Seitenklasse und eine Datenzugriffsklasse veranschaulicht, mit denen Benutzer Datensätze in der Tabelle Employees der Datenbank Northwind abrufen und aktualisieren können.

Im ersten Beispiel wird eine Webseite veranschaulicht, die zwei ObjectDataSource-Steuerelemente, ein DropDownList-Steuerelement und ein DetailsView-Steuerelement enthält. Mit dem ersten ObjectDataSource-Steuerelement und dem DropDownList-Steuerelement werden Mitarbeiternamen aus der Datenbank abgerufen und angezeigt. Mit dem zweiten ObjectDataSource-Steuerelement und dem DetailsView-Steuerelement werden die Daten aus dem vom Benutzer ausgewählten Mitarbeiterdatensatz abgerufen, angezeigt und geändert.

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


Im zweiten Beispiel werden Handler für das Selected-Ereignis und das Updating-Ereignis dargestellt. Der Selected-Ereignishandler serialisiert das Objekt, das die aus der Employee-Tabelle abgerufenen Daten enthält. Das serialisierte Objekt wird im Ansichtszustand gespeichert. Der Updating-Ereignishandler deserialisiert das Objekt im Ansichtszustand, das die ursprünglichen Daten für den aktualisierten Datensatz enthält. Das Objekt, das die ursprünglichen Daten enthält, wird als Parameter an die Update-Methode übergeben. Die ursprünglichen Daten müssen so an die Datenbank übergeben werden, dass überprüft werden kann, ob die Daten durch einen 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();
    }
}


Im dritten Beispiel wird die Datenzugriffsklasse veranschaulicht, die mit der Datenbank Northwind interagiert. Die Klasse verwendet LINQ zum Abfragen und Aktualisieren der Tabelle Employees. Das Beispiel erfordert eine LINQ to SQL-Klasse, die die Datenbank Northwind und die Tabelle Employees darstellt. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von LINQ to SQL-Klassen in einer Webanwendung .

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


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft