GridView.RowDeleting Событие

Определение

Происходит при щелчке кнопки "Удалить" в строке, до удаления строки элементом управления GridView.Occurs when a row's Delete button is clicked, but before the GridView control deletes the row.

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 

Тип события

GridViewDeleteEventHandler

Примеры

В следующем примере показано, как использовать RowDeleting событие для отмены операции удаления.The following example demonstrates how to use the RowDeleting event to cancel the delete operation. Страница содержит GridView элемент управления, в котором отображается список имен клиентов и адресов из базы данных AdventureWorksLT.The page contains a GridView control that displays a list of customer names and addresses from the AdventureWorksLT database. Когда пользователь щелкает ссылку Удалить для строки, обработчик RowDeleting события проверяет фамилию пользователя, отображаемого в строке, которую пытается удалить пользователь.When the user clicks the Delete link for a row, the handler for the RowDeleting event checks the last name of the person displayed in the row that the user is trying to delete. Если последним именем является "Беавер", операция удаления отменяется и выводится сообщение об ошибке.If the last name is "Beaver", the delete operation is canceled, and an error message is displayed. Для любого другого имени операция удаления продолжается, а строка удаляется.For any other name, the delete operation proceeds and the row is deleted.

Обработчик событий использует RowIndex свойство GridViewDeleteEventArgs объекта для поиска строки, которую пользователь пытается удалить.The event handler uses the RowIndex property of the GridViewDeleteEventArgs object to find the row that the user is trying to delete. В примере проверяется содержимое Rows коллекции.The example examines the contents of the Rows collection. Если значение, которое необходимо сравнить с, является значением ключа, можно изучить DataKeys коллекцию.If the value you want to compare to is a key value, you could examine the DataKeys collection instead.

Для упрощения примера строки удаляются из таблицы CustomerAddress, а не из таблицы Customer.Rows are deleted from the CustomerAddress table instead of the Customer table in order to keep the example simple. GridViewЭлемент управления показывает результат объединения трех таблиц: Customer, Address и CustomerAddress.The GridView control shows the result of joining three tables: Customer, Address, and CustomerAddress. При удалении строки CustomerAddress соответствующая GridView строка исчезает.When a CustomerAddress row is deleted, the corresponding GridView row disappears. Ограничения ссылочной целостности делают код для примера, который в действительности удаляет строки из таблицы Customer.Referential integrity constraints would make the code for an example that actually deletes rows from the Customer table more complex.

Сведения о настройке базы данных AdventureWorksLT см. в разделе как настроить образец базы данных AdventureWorksLT для разработки ASP.NET.For information about how to set up the AdventureWorksLT database, see How to: Set Up an AdventureWorksLT Sample Database for ASP.NET Development.


<%@ 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>

Комментарии

RowDeletingСобытие возникает при нажатии кнопки удаления строки, но до того, как GridView элемент управления удалит строку.The RowDeleting event is raised when a row's Delete button is clicked, but before the GridView control deletes the row. Это позволяет предоставить метод обработки событий, выполняющий пользовательскую подпрограммы, например отмену операции удаления, при возникновении этого события.This enables you to provide an event-handling method that performs a custom routine, such as canceling the delete operation, whenever this event occurs.

GridViewDeleteEventArgsОбъект передается в метод обработки событий, который позволяет определить индекс текущей строки и указать, что операция удаления должна быть отменена.A GridViewDeleteEventArgs object is passed to the event-handling method, which enables you to determine the index of the current row and to indicate that the delete operation should be canceled. Чтобы отменить операцию удаления, присвойте Cancel свойству объекта значение GridViewDeleteEventArgs true .To cancel the delete operation, set the Cancel property of the GridViewDeleteEventArgs object to true. При необходимости можно также управлять Keys Values коллекциями и, прежде чем значения передаются в источник данных.You can also manipulate the Keys and Values collections, if necessary, before the values are passed to the data source.

Дополнительные сведения об обработке событий см. в разделе обработка и вызов событий.For more information about how to handle events, see Handling and Raising Events.

Применяется к

См. также раздел