Occurs when a row's Delete button is clicked, but before the GridView control deletes the row.
Public Event RowDeleting As GridViewDeleteEventHandler
Dim instance As GridView Dim handler As GridViewDeleteEventHandler AddHandler instance.RowDeleting, handler
public event GridViewDeleteEventHandler RowDeleting
public: event GridViewDeleteEventHandler^ RowDeleting { void add (GridViewDeleteEventHandler^ value); void remove (GridViewDeleteEventHandler^ value); }
JScript does not support events.
<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.
<%@ 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>
<%@ 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
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!