GridView.RowDeleting Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt ein, wenn auf die Schaltfläche Löschen einer Zeile geklickt wird, allerdings bevor das GridView-Steuerelement die Zeile tatsächlich löscht.
public:
event System::Web::UI::WebControls::GridViewDeleteEventHandler ^ RowDeleting;
public event System.Web.UI.WebControls.GridViewDeleteEventHandler RowDeleting;
member this.RowDeleting : System.Web.UI.WebControls.GridViewDeleteEventHandler
Public Custom Event RowDeleting As GridViewDeleteEventHandler
Ereignistyp
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie Sie das RowDeleting Ereignis verwenden, um den Löschvorgang abzubrechen. Die Seite enthält ein GridView Steuerelement, das eine Liste mit Kundennamen und Adressen aus der AdventureWorksLT-Datenbank anzeigt. Wenn der Benutzer auf den Link Löschen für eine Zeile klickt, überprüft der Handler für das RowDeleting Ereignis den Nachnamen der Person, die in der Zeile angezeigt wird, die der Benutzer zu löschen versucht. Wenn der Nachname "Beaver" lautet, wird der Löschvorgang abgebrochen, und es wird eine Fehlermeldung angezeigt. Bei jedem anderen Namen wird der Löschvorgang fortgesetzt, und die Zeile wird gelöscht.
Der Ereignishandler verwendet die RowIndex -Eigenschaft des GridViewDeleteEventArgs -Objekts, um die Zeile zu finden, die der Benutzer zu löschen versucht. Im Beispiel wird der Inhalt der Rows Auflistung untersucht. Wenn der Wert, mit dem Sie vergleichen möchten, ein Schlüsselwert ist, können Sie stattdessen die DataKeys Auflistung untersuchen.
Zeilen werden aus der Tabelle CustomerAddress anstelle der Tabelle Customer gelöscht, um das Beispiel einfach zu halten. Das GridView Steuerelement zeigt das Ergebnis der Verknüpfung von drei Tabellen an: Customer, Address und CustomerAddress. Wenn eine CustomerAddress-Zeile gelöscht wird, wird die entsprechende GridView Zeile ausgeblendet. Durch Einschränkungen der referenziellen Integrität wird der Code für ein Beispiel, das Zeilen aus der Tabelle Customer löscht, komplexer.
Informationen zum Einrichten der AdventureWorksLT-Datenbank finden Sie unter Vorgehensweise: Einrichten einer AdventureWorksLT-Beispieldatenbank für ASP.NET-Entwicklung.
<%@ 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">
void CustomersGridView_RowDeleting
(Object sender, GridViewDeleteEventArgs e)
{
TableCell cell = CustomersGridView.Rows[e.RowIndex].Cells[2];
if (cell.Text == "Beaver")
{
e.Cancel = true;
Message.Text = "You cannot delete customer Beaver.";
}
else
{
Message.Text = "";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>GridView RowDeleting Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>
GridView RowDeleting Example
</h3>
<asp:Label ID="Message" ForeColor="Red" runat="server" />
<br />
<asp:GridView ID="CustomersGridView" runat="server"
DataSourceID="CustomersSqlDataSource"
AutoGenerateColumns="False"
AutoGenerateDeleteButton="True"
OnRowDeleting="CustomersGridView_RowDeleting"
DataKeyNames="CustomerID,AddressID">
<Columns>
<asp:BoundField DataField="FirstName"
HeaderText="FirstName" SortExpression="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName"
SortExpression="LastName" />
<asp:BoundField DataField="City" HeaderText="City"
SortExpression="City" />
<asp:BoundField DataField="StateProvince" HeaderText="State"
SortExpression="StateProvince" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="CustomersSqlDataSource" runat="server"
SelectCommand="SELECT SalesLT.CustomerAddress.CustomerID,
SalesLT.CustomerAddress.AddressID,
SalesLT.Customer.FirstName,
SalesLT.Customer.LastName,
SalesLT.Address.City,
SalesLT.Address.StateProvince
FROM SalesLT.Customer
INNER JOIN SalesLT.CustomerAddress
ON SalesLT.Customer.CustomerID =
SalesLT.CustomerAddress.CustomerID
INNER JOIN SalesLT.Address ON SalesLT.CustomerAddress.AddressID =
SalesLT.Address.AddressID"
DeleteCommand="Delete from SalesLT.CustomerAddress where CustomerID =
@CustomerID and AddressID = @AddressID"
ConnectionString="<%$ ConnectionStrings:AdventureWorksLTConnectionString %>">
<DeleteParameters>
<asp:Parameter Name="AddressID" />
<asp:Parameter Name="CustomerID" />
</DeleteParameters>
</asp:SqlDataSource>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Private Sub CustomersGridView_RowDeleting _
(ByVal sender As [Object], _
ByVal e As GridViewDeleteEventArgs)
Dim cell As TableCell
cell = CustomersGridView.Rows(e.RowIndex).Cells(2)
If cell.Text = "Beaver" Then
e.Cancel = True
Message.Text = "You cannot delete customer Beaver."
Else
Message.Text = ""
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>GridView RowDeleting Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>
GridView RowDeleting Example
</h3>
<asp:Label ID="Message" ForeColor="Red" runat="server" />
<br />
<asp:GridView ID="CustomersGridView" runat="server"
DataSourceID="CustomersSqlDataSource"
AutoGenerateColumns="False"
AutoGenerateDeleteButton="True"
OnRowDeleting="CustomersGridView_RowDeleting"
DataKeyNames="CustomerID,AddressID">
<Columns>
<asp:BoundField DataField="FirstName"
HeaderText="FirstName" SortExpression="FirstName" />
<asp:BoundField DataField="LastName" HeaderText="LastName"
SortExpression="LastName" />
<asp:BoundField DataField="City" HeaderText="City"
SortExpression="City" />
<asp:BoundField DataField="StateProvince" HeaderText="State"
SortExpression="StateProvince" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="CustomersSqlDataSource" runat="server"
SelectCommand="SELECT SalesLT.CustomerAddress.CustomerID,
SalesLT.CustomerAddress.AddressID,
SalesLT.Customer.FirstName,
SalesLT.Customer.LastName,
SalesLT.Address.City,
SalesLT.Address.StateProvince
FROM SalesLT.Customer
INNER JOIN SalesLT.CustomerAddress
ON SalesLT.Customer.CustomerID =
SalesLT.CustomerAddress.CustomerID
INNER JOIN SalesLT.Address ON SalesLT.CustomerAddress.AddressID =
SalesLT.Address.AddressID"
DeleteCommand="Delete from SalesLT.CustomerAddress where CustomerID =
@CustomerID and AddressID = @AddressID"
ConnectionString="<%$ ConnectionStrings:AdventureWorksLTConnectionString %>">
<DeleteParameters>
<asp:Parameter Name="AddressID" />
<asp:Parameter Name="CustomerID" />
</DeleteParameters>
</asp:SqlDataSource>
</form>
</body>
</html>
Hinweise
Das RowDeleting Ereignis wird ausgelöst, wenn auf die Schaltfläche Löschen einer Zeile geklickt wird, aber bevor das GridView Steuerelement die Zeile löscht. Dadurch können Sie eine Ereignisbehandlungsmethode bereitstellen, die eine benutzerdefinierte Routine ausführt, z. B. das Abbrechen des Löschvorgangs, wenn dieses Ereignis auftritt.
Ein GridViewDeleteEventArgs -Objekt wird an die Ereignisbehandlungsmethode übergeben, mit der Sie den Index der aktuellen Zeile bestimmen und angeben können, dass der Löschvorgang abgebrochen werden soll. Um den Löschvorgang abzubrechen, legen Sie die Cancel -Eigenschaft des GridViewDeleteEventArgs -Objekts auf fest true
. Sie können die Keys Auflistungen und Values ggf. auch bearbeiten, bevor die Werte an die Datenquelle übergeben werden.
Weitere Informationen zum Behandeln von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.