GridView.RowDeleting Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Nastane při kliknutí na tlačítko Odstranit na řádku, ale předtím, než GridView ovládací prvek odstraní řádek.
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
Event Type
Příklady
Následující příklad ukazuje, jak použít RowDeleting událost ke zrušení operace odstranění. Stránka obsahuje ovládací prvek GridView , který zobrazuje seznam jmen a adres zákazníků z databáze AdventureWorksLT. Když uživatel klikne na odkaz Odstranit pro řádek, obslužná rutina události RowDeleting zkontroluje příjmení osoby zobrazené v řádku, který se uživatel pokouší odstranit. Pokud je příjmení "Bobr", operace odstranění se zruší a zobrazí se chybová zpráva. U jakéhokoli jiného názvu pokračuje operace odstranění a řádek se odstraní.
Obslužná rutina události používá RowIndex vlastnost objektu GridViewDeleteEventArgs k vyhledání řádku, který se uživatel pokouší odstranit. Příklad prozkoumá obsah Rows kolekce. Pokud je hodnota, se kterou chcete porovnat, klíčovou hodnotou, můžete místo toho prozkoumat kolekci DataKeys .
Řádky se odstraní z tabulky CustomerAddress místo z tabulky Customer, aby byl příklad jednoduchý. Ovládací GridView prvek zobrazuje výsledek spojení tří tabulek: Customer(Zákazník), Address (Adresa) a CustomerAddress (Adresa zákazníka). Po odstranění řádku CustomerAddress odpovídající GridView řádek zmizí. Omezení referenční integrity by zkompilovala kód příkladu, který ve skutečnosti odstraňuje řádky z tabulky Customer.
Informace o nastavení databáze AdventureWorksLT najdete v tématu Postupy: Nastavení ukázkové databáze AdventureWorksLT pro vývoj ASP.NET.
<%@ 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>
Poznámky
Událost RowDeleting se vyvolá po kliknutí na tlačítko Odstranit na řádku, ale před tím GridView , než ovládací prvek řádek odstraní. To vám umožní poskytnout metodu zpracování událostí, která provádí vlastní rutinu, například zrušení operace odstranění, kdykoli dojde k této události.
Objekt GridViewDeleteEventArgs je předán metodě zpracování událostí, která umožňuje určit index aktuálního řádku a označit, že operace odstranění by měla být zrušena. Pokud chcete zrušit operaci odstranění, nastavte Cancel vlastnost objektu GridViewDeleteEventArgs na true
. V případě potřeby můžete také manipulovat s Keys kolekcemi a Values před předáním hodnot do zdroje dat.
Další informace o zpracování událostí najdete v tématu Zpracování a vyvolávání událostí.