Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5
GridView Class
GridView Events
 RowDeleting Event

  Switch on low bandwidth view
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
GridView..::.RowDeleting Event

Occurs when a row's Delete button is clicked, but before the GridView control deletes the row.

Namespace:  System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)
Visual Basic (Declaration)
Public Event RowDeleting As GridViewDeleteEventHandler
Visual Basic (Usage)
Dim instance As GridView
Dim handler As GridViewDeleteEventHandler

AddHandler instance.RowDeleting, handler
C#
public event GridViewDeleteEventHandler RowDeleting
Visual C++
public:
 event GridViewDeleteEventHandler^ RowDeleting {
    void add (GridViewDeleteEventHandler^ value);
    void remove (GridViewDeleteEventHandler^ value);
}
JScript
JScript does not support events.
ASP.NET
<asp:GridView OnRowDeleting="GridViewDeleteEventHandler" />

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.

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. To cancel the delete operation, set the Cancel property of the GridViewDeleteEventArgs object to true. You can also manipulate the Keys and Values collections, if necessary, before the values are passed to the data source.

For more information about handling events, see Consuming Events.

The following example demonstrates how to use the RowDeleting event to cancel the deleting operation if the user attempts to remove the last record from a GridView control.

Visual Basic
<%@ 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">

  Sub CustomersGridView_RowDeleting(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs)

    ' Cancel the delete operation if the user attempts to remove
    ' the last record from the GridView control.
    If CustomersGridView.Rows.Count <= 1 Then

      e.Cancel = True
      Message.Text = "You must keep at least one record."

    End If

  End Sub

</script>

<html  >
  <head 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/>

      <!-- The GridView control automatically sets the columns     -->
      <!-- specified in the datakeynames property as read-only.    -->
      <!-- No input controls are rendered for these columns in     -->
      <!-- edit mode.                                              -->
      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSqlDataSource" 
        autogeneratecolumns="true"
        autogeneratedeletebutton="true"
        datakeynames="CustomerID"
        onrowdeleting="CustomersGridView_RowDeleting"  
        runat="server">
      </asp:gridview>

      <!-- This example uses Microsoft SQL Server and connects  -->
      <!-- to the Northwind sample database. Use an ASP.NET     -->
      <!-- expression to retrieve the connection string value   -->
      <!-- from the Web.config file.                            -->
      <asp:sqldatasource id="CustomersSqlDataSource"  
        selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
        deletecommand="Delete from Customers where CustomerID = @CustomerID"
        connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
        runat="server">
      </asp:sqldatasource>

    </form>
  </body>
</html>



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)
  {

    // Cancel the delete operation if the user attempts to remove
    // the last record from the GridView control.
    if (CustomersGridView.Rows.Count <= 1)
    {

      e.Cancel = true;
      Message.Text = "You must keep at least one record.";

    }

  }  

</script>

<html  >
  <head 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/>

      <!-- The GridView control automatically sets the columns     -->
      <!-- specified in the datakeynames property as read-only.    -->
      <!-- No input controls are rendered for these columns in     -->
      <!-- edit mode.                                              -->
      <asp:gridview id="CustomersGridView" 
        datasourceid="CustomersSqlDataSource" 
        autogeneratecolumns="true"
        autogeneratedeletebutton="true"
        datakeynames="CustomerID"
        onrowdeleting="CustomersGridView_RowDeleting"  
        runat="server">
      </asp:gridview>

      <!-- This example uses Microsoft SQL Server and connects  -->
      <!-- to the Northwind sample database. Use an ASP.NET     -->
      <!-- expression to retrieve the connection string value   -->
      <!-- from the Web.config file.                            -->
      <asp:sqldatasource id="CustomersSqlDataSource"  
        selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]"
        deletecommand="Delete from Customers where CustomerID = @CustomerID"
        connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>"
        runat="server">
      </asp:sqldatasource>

    </form>
  </body>
</html>



Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Better example?      Tom Lianza   |   Edit   |   Show History
Could someone please add an example where you actually examine the row being deleted? This example doesn't include the key bit of code required for anyone to make use of the event - figuring out which row the user is trying to delete.
Flag as ContentBug
A Better Example      Stephajn Saunter   |   Edit   |   Show History
I agree with Tom. This doesn't show really how to properly delete a row so I did a bit of digging and this is the code I came up with.

int someID = (int)myGrid.DataKeys[e.RowIndex].Value;


This assumes that you set the DataKeyNames property of your grid to a field containing the unique ID that you would want to use. (In this example, the unique key is an integer field but really it could be anything you want so long as it is unique)


if you want to retreive the actual GridRow that is being deleted, use

myGrid.Rows[e.RowIndex]



Note that e.RowIndex does not include the header row. Thus, your first data row has an index of 0.

Hope that helps!

Flag as ContentBug
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker