Freigeben über


Ändern von Daten mit Datenquellensteuerelementen

Aktualisiert: November 2007

Datenquellensteuerelemente erweitern die Möglichkeiten zum Ändern von Daten in Datenquellen mit datengebundenen Steuerelementen, z. B. ListView, GridView, FormView und DetailsView, ohne dass dazu viel Code erforderlich ist. Da das Datenquellensteuerelement die Datenänderungen ausführt, können datengebundene Steuerelemente ohne spezifische Informationen über die Datenbank oder eine andere Datenquelle Aktualisierungen unterstützen. Sie können verschiedene Datenquellensteuerelemente mit einer beliebigen Kombination aus Steuerelementen auf der Seite verwenden. Sie können zusätzlich die Datenbank oder die Datenquelle eines datengebundenen Steuerelements ändern, indem Sie mit der DataSourceID des datengebundenen Steuerelements auf ein anderes Datenquellensteuerelement zeigen.

Datenänderungsbefehle

Sie können die Steuerelemente ObjectDataSource, SqlDataSource und AccessDataSource mit Datenbefehlen zum Einfügen, Aktualisieren und Löschen von Daten im jeweils zugehörigen Datenspeicher konfigurieren.

Wenn Sie das LinqDataSource-Steuerelement zum Bearbeiten von Daten verwenden, müssen Sie keine Befehle zum Einfügen, Aktualisieren und Löschen von Daten angeben. Diese Befehle werden automatisch generiert.

Ändern von Daten mit dem LinqDataSource-Steuerelement

Sie können das Einfügen, Aktualisieren und Löschen mithilfe des LinqDataSource-Steuerelements aktivieren, indem Sie die Eigenschaften EnableInsert, EnableUpdate und EnableDelete auf true setzen. Wenn diese Eigenschaften auf true gesetzt sind, verwendet das LinqDataSource-Steuerelement LINQ to SQL, um die Befehle zum Bearbeiten der Daten automatisch zu erstellen.

Das folgende Beispiel zeigt ein LinqDataSource-Steuerelement, für das EnableInsert, EnableUpdate und EnableDelete auf true gesetzt sind. Ein DetailsView-Steuerelement zeigt die Daten an und erstellt für jeden Befehl eine Schaltfläche, mit denen Benutzer die Daten bearbeiten können.

<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    EnableUpdate="true"
    EnableInsert="true"
    EnableDelete="true"
    ID="LinqDataSource1" 
    >
</asp:LinqDataSource>
<asp:DetailsView 
    DataKeyNames="ProductID"
    AutoGenerateEditButton="true"
    AutoGenerateDeleteButton="true"
    AutoGenerateInsertButton="true"
    AllowPaging="true"
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    >
</asp:DetailsView>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    EnableUpdate="true"
    EnableInsert="true"
    EnableDelete="true"
    ID="LinqDataSource1" 
    >
</asp:LinqDataSource>
<asp:DetailsView 
    DataKeyNames="ProductID"
    AutoGenerateEditButton="true"
    AutoGenerateDeleteButton="true"
    AutoGenerateInsertButton="true"
    AllowPaging="true"
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    >
</asp:DetailsView>

Ändern von Daten mit dem ObjectDataSource-Steuerelement

Mit dem ObjectDataSource-Steuerelement können Sie eine Datenobjektmethode zum Ausführen eines spezifischen Aktualisierungstyps angeben. Die InsertMethod-Eigenschaft gibt die Datenobjektmethode an, die aufgerufen wird, wenn das ObjectDataSource-Steuerelement ein Element in die Datenquelle einfügt. Entsprechend gibt die UpdateMethod-Eigenschaft die Datenobjektmethode an, die beim Aktualisieren eines Elements verwendet wird, und die DeleteMethod-Eigenschaft die Methode zum Löschen von Elementen aus der Datenquelle.

Das folgende Codebeispiel zeigt ein ObjectDataSource-Steuerelement mit den Eigenschaften InsertMethod, UpdateMethod und DeleteMethod, die mit den Methodennamen des zugrunde liegenden Datenobjekts konfiguriert sind.

<asp:ObjectDataSource 
  ID="EmployeeDetailsObjectDataSource" 
   
  TypeName="Samples.AspNet.Controls.NorthwindEmployee" 
  SelectMethod="GetEmployee" 
  UpdateMethod="UpdateEmployee"
  DeleteMethod="DeleteEmployee"
  InsertMethod="InsertEmployee" 
  OnInserted="EmployeeDetailsObjectDataSource_OnInserted" >
  <SelectParameters>
    <asp:Parameter Name="EmployeeID" />  
  </SelectParameters>
  <InsertParameters>
    <asp:Parameter Name="NewEmployeeID" Direction="Output" 
                   Type="Int32" DefaultValue="0" />
  </InsertParameters>
</asp:ObjectDataSource>
<asp:ObjectDataSource 
  ID="EmployeeDetailsObjectDataSource" 
   
  TypeName="Samples.AspNet.Controls.NorthwindEmployee" 
  SelectMethod="GetEmployee" 
  UpdateMethod="UpdateEmployee"
  DeleteMethod="DeleteEmployee"
  InsertMethod="InsertEmployee" 
  OnInserted="EmployeeDetailsObjectDataSource_OnInserted" >
  <SelectParameters>
    <asp:Parameter Name="EmployeeID" />  
  </SelectParameters>
  <InsertParameters>
    <asp:Parameter Name="NewEmployeeID" Direction="Output" 
                   Type="Int32" DefaultValue="0" />
  </InsertParameters>
</asp:ObjectDataSource>

Weitere Informationen finden Sie unter Erstellen eines Quellobjekts für das ObjectDataSource-Steuerelement.

Ändern von Daten mit SQL-Befehlen

Mit dem SqlDataSource-Steuerelement und dem AccessDataSource-Steuerelement können Sie SQL-Befehle zum Ändern von Daten in der Datenquelle bereitstellen. Die InsertCommand-Eigenschaft gibt einen SQL-Befehl zum Einfügen eines Datensatzes in die Datenquelle an. Entsprechend gibt die UpdateCommand-Eigenschaft einen Befehl zum Aktualisieren von Datensätzen an und die DeleteCommand-Eigenschaft einen Befehl zum Löschen von Datensätzen aus der Datenquelle.

Das folgende Codebeispiel zeigt ein SqlDataSource-Steuerelement mit den Eigenschaften InsertCommand, UpdateCommand und DeleteCommand, die mit SQL-Befehlen für Aktualisierungsaufgaben konfiguriert sind.

<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
  SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"

  InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                 SELECT @EmpID = SCOPE_IDENTITY()"
  UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName 
                   WHERE EmployeeID=@EmployeeID"
  DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"

  ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
  OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
  RunAt="server">

  <SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
  </SelectParameters>

  <InsertParameters>
    <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
  </InsertParameters>

</asp:sqlDataSource>
<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
  SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"

  InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                 SELECT @EmpID = SCOPE_IDENTITY()"
  UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName 
                   WHERE EmployeeID=@EmployeeID"
  DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"

  ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
  OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
  RunAt="server">

  <SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
  </SelectParameters>

  <InsertParameters>
    <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
  </InsertParameters>

</asp:sqlDataSource>

Weitere Informationen finden Sie unter Bearbeiten von Daten mithilfe des SqlDataSource-Steuerelements.

Parameter

Sie können das Aktualisieren von Daten noch flexibler und sicherer gestalten, indem Sie zum Übergeben von Datenspeicherwerten, die eingefügt, aktualisiert oder gelöscht werden sollen, Parameter verwenden. Parameterwerte können Werte von Steuerelementen auf der Seite, ASP.NET-Anwendungsvariablen, Sitzungswerten usw. enthalten.

Parameterwerte stammen normalerweise von datengebundenen Steuerelementen, die Operationen zum Aktualisieren, Einfügen oder Löschen aufrufen. Außerdem können Sie explizite Parameterobjekte für das Datenquellensteuerelement und für eine bestimmte Operation erstellen und die Parameter auf diese Weise anpassen. Zum Beispiel können Sie ein explizites Parameterobjekt verwenden, um den Typ oder die Richtung eines Parameters anzugeben, oder für den Fall, dass ein null-Wert übergeben wird, einen Standardwert für den Parameter definieren.

Für das ObjectDataSource-Steuerelement werden beim Aufrufen der entsprechenden Methode des zugrunde liegenden Datenobjekts die Parameterwerte als Argumente übergeben. Für das SqlDataSource-Steuerelement oder das AccessDataSource-Steuerelement werden die Parameter an den für die Aktualisierung verwendeten SQL-Befehl übergeben. Weitere Informationen und Beispiele finden Sie unter Verwenden von Parametern für Datenquellen-Steuerelemente.

Ereignisse

Datenquellensteuerelemente lösen sowohl vor als auch nach dem Ändern von Daten Ereignisse aus. Sie können diese Ereignisse nutzen, um vor und nach der Datenoperation Code auszuführen, wobei Sie die Operation auch abbrechen können. Zum Beispiel können Sie das Deleting-Ereignis des SqlDataSource-Steuerelements verwenden, um Informationen über einen zu löschenden Datensatz zu protokollieren. Sie können auch das Inserted-Ereignis des SqlDataSource-Steuerelements verwenden, um für den neu eingefügten Datensatz einen automatisch generierten Identitätswert abzurufen.

Siehe auch

Weitere Ressourcen

Datengebundene Webserversteuerelemente