GridView.RowDeleting Gebeurtenis
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Treedt op wanneer op de knop Verwijderen van een rij wordt geklikt, maar voordat het GridView besturingselement de rij verwijdert.
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
Gebeurtenistype
Voorbeelden
In het volgende voorbeeld ziet u hoe u de RowDeleting gebeurtenis gebruikt om de verwijderbewerking te annuleren. De pagina bevat een GridView besturingselement met een lijst met klantnamen en adressen uit de AdventureWorksLT-database. Wanneer de gebruiker op de koppeling Verwijderen voor een rij klikt, controleert de handler voor de RowDeleting gebeurtenis de achternaam van de persoon die wordt weergegeven in de rij die de gebruiker probeert te verwijderen. Als de achternaam 'Bever' is, wordt de verwijderbewerking geannuleerd en wordt er een foutbericht weergegeven. Voor een andere naam wordt de verwijderbewerking voortgezet en wordt de rij verwijderd.
De gebeurtenis-handler gebruikt de RowIndex eigenschap van het GridViewDeleteEventArgs object om de rij te vinden die de gebruiker probeert te verwijderen. In het voorbeeld wordt de inhoud van de Rows verzameling onderzocht. Als de waarde die u wilt vergelijken een sleutelwaarde is, kunt u in plaats daarvan de DataKeys verzameling onderzoeken.
Rijen worden verwijderd uit de tabel CustomerAddress in plaats van de tabel Customer om het voorbeeld eenvoudig te houden. Het GridView besturingselement toont het resultaat van het samenvoegen van drie tabellen: Klant, Adres en CustomerAddress. Wanneer een CustomerAddress-rij wordt verwijderd, verdwijnt de bijbehorende GridView rij. Referentiƫle integriteitsbeperkingen maken de code voor een voorbeeld dat rijen daadwerkelijk verwijdert uit de tabel Klant complexer.
Zie Hoe to: Een AdventureWorksLT-voorbeelddatabase instellen voor ASP.NET Development voor meer informatie over het instellen van de AdventureWorksLT-database.
<%@ 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>
Opmerkingen
De RowDeleting gebeurtenis treedt op wanneer op de knop Verwijderen van een rij wordt geklikt, maar voordat de rij wordt verwijderd door het GridView besturingselement. Hiermee kunt u een methode voor gebeurtenisafhandeling opgeven waarmee een aangepaste routine wordt uitgevoerd, zoals het annuleren van de verwijderbewerking wanneer deze gebeurtenis plaatsvindt.
Een GridViewDeleteEventArgs object wordt doorgegeven aan de methode voor gebeurtenisafhandeling, waarmee u de index van de huidige rij kunt bepalen en kunt aangeven dat de verwijderbewerking moet worden geannuleerd. Als u de verwijderbewerking wilt annuleren, stelt u de Cancel eigenschap van het GridViewDeleteEventArgs object in op true. U kunt de Keys en Values verzamelingen, indien nodig, ook bewerken voordat de waarden worden doorgegeven aan de gegevensbron.
Zie Gebeurtenissen verwerken en genereren voor meer informatie over het afhandelen van gebeurtenissen.