(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

ObjectDataSource.Selected-Ereignis

Tritt ein, wenn ein Select-Vorgang abgeschlossen wurde.

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

public event ObjectDataSourceStatusEventHandler Selected
<asp:ObjectDataSource OnSelected="ObjectDataSourceStatusEventHandler" />

Behandeln Sie das Selected-Ereignis, um die Werte eines Rückgabewerts oder Ausgabeparameter zu überprüfen oder um zu bestimmen, ob nach Abschluss eines Select-Vorgangs eines Ausnahme ausgelöst wurde. Der Rückgabewert, die Ausgabeparameter und die Eigenschaften für die Ausnahmebehandlung sind im ObjectDataSourceStatusEventArgs-Objekt verfügbar, das dem Ereignis zugeordnet ist.

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 How to: Create LINQ to SQL Classes in a Web Application.


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

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

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, 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.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft