GridView.RowDeleting イベント

定義

行の Delete ボタンがクリックされた場合に、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 

次の例では、 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. 姓が "Beaver" の場合、削除操作は取り消され、エラーメッセージが表示されます。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.

例を単純にするために、行は Customer テーブルではなく CustomerAddress テーブルから削除されます。Rows are deleted from the CustomerAddress table instead of the Customer table in order to keep the example simple. コントロールGridViewは、3つのテーブルを結合した結果を示します。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 データベースを設定する方法については、「 方法:ASP.NET 開発用の AdventureWorksLT サンプルデータベースを設定します。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>

注釈

イベントは、行の Delete ボタンがクリックされたときに、コントロールGridViewが行を削除する前に発生します。 RowDeletingThe 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. また、必要に応じKeysValues 、データソースに値が渡される前に、コレクションおよびコレクションを操作することもできます。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.

適用対象

こちらもご覧ください