英語で読む

次の方法で共有


GridView.RowDeleting イベント

定義

行の Delete ボタンがクリックされた場合に、GridView コントロールが行を削除する前に発生します。

C#
public event System.Web.UI.WebControls.GridViewDeleteEventHandler RowDeleting;

イベントの種類

次の例では、 イベントを使用 RowDeleting して削除操作を取り消す方法を示します。 ページには、 GridView AdventureWorksLT データベースの顧客名と住所の一覧を表示するコントロールが含まれています。 ユーザーが行の [削除 ] リンクをクリックすると、イベントのハンドラー RowDeleting によって、ユーザーが削除しようとしている行に表示されているユーザーの姓がチェックされます。 姓が "ビーバー" の場合、削除操作は取り消され、エラー メッセージが表示されます。 その他の名前の場合は、削除操作が続行され、行が削除されます。

イベント ハンドラーは、 RowIndex オブジェクトの プロパティを GridViewDeleteEventArgs 使用して、ユーザーが削除しようとしている行を検索します。 この例では、コレクションの内容を Rows 調べます。 比較する値がキー値の場合は、代わりにコレクションを DataKeys 調べることができます。

例をシンプルに保つために、Customer テーブルではなく CustomerAddress テーブルから行が削除されます。 コントロールには GridView 、Customer、Address、CustomerAddress の 3 つのテーブルを結合した結果が表示されます。 CustomerAddress 行が削除されると、対応する GridView 行は消えます。 参照整合性制約により、Customer テーブルから実際に行を削除する例のコードがより複雑になります。

AdventureWorksLT データベースを設定する方法については、「 How to: Set up an AdventureWorksLT Sample Database for ASP.NET Development」を参照してください。

ASP.NET (C#)

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

注釈

イベントは RowDeleting 、行の [削除] ボタンがクリックされると発生しますが、コントロールが GridView 行を削除する前に発生します。 これにより、このイベントが発生するたびに、削除操作のキャンセルなどのカスタム ルーチンを実行するイベント処理メソッドを提供できます。

GridViewDeleteEventArgsオブジェクトはイベント処理メソッドに渡されます。これにより、現在の行のインデックスを決定し、削除操作を取り消す必要があることを示すことができます。 削除操作を取り消すには、 オブジェクトの プロパティを CancelGridViewDeleteEventArgstrue設定します。 必要に応じて、値が Keys データ ソースに渡される前に、 コレクションと Values コレクションを操作することもできます。

イベントを処理する方法の詳細については、次を参照してください。処理とイベントの発生します。

適用対象

製品 バージョン
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

こちらもご覧ください