GridViewCommandEventHandler Delegate
Represents the method that handles the RowCommand event of a GridView control.
Assembly: System.Web (in System.Web.dll)
Public Delegate Sub GridViewCommandEventHandler ( sender As Object, e As GridViewCommandEventArgs )
Parameters
- sender
-
Type:
System.Object
The source of the event.
- e
-
Type:
System.Web.UI.WebControls.GridViewCommandEventArgs
A GridViewCommandEventArgs object that contains the event data.
The RowCommand event is raised when a button within the GridView control is clicked. This allows you to provide an event-handling method that performs a custom routine whenever this event occurs.
Note |
|---|
The GridView control also raises other specialized events when certain buttons are clicked (buttons with the CommandName property set to "Delete", "Update", and "Page" for example). When using one of these buttons, you should consider handling one of the specialized events provided by the control (such as RowDeleted or RowDeleting). |
When you create a GridViewCommandEventHandler delegate, you identify the method that will handle the event. To associate the event with your event handler, add an instance of the delegate to the event. The event handler is called whenever the event occurs, unless you remove the delegate. For more information about event-handler delegates, see NIB: Events and Delegates.
The following example demonstrates how to programmatically add a GridViewCommandEventHandler delegate to the RowCommand event of 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 Page_Load(ByVal sender As Object, ByVal e As EventArgs) ' Create a new GridView object. Dim customersGridView As New GridView() ' Set the GridView object's properties. customersGridView.ID = "CustomersGridView" customersGridView.DataSourceID = "CustomersSource" customersGridView.AutoGenerateColumns = False ' Dynamically create the columns for the GridView control. Dim addColumn As New ButtonField() addColumn.CommandName = "Add" addColumn.Text = "Add" addColumn.ButtonType = ButtonType.Link Dim companyNameColumn As New BoundField() companyNameColumn.DataField = "CompanyName" companyNameColumn.HeaderText = "Company Name" Dim cityColumn As New BoundField() cityColumn.DataField = "City" cityColumn.HeaderText = "City" ' Add the columns to the Columns collection ' of the GridView control. customersGridView.Columns.Add(addColumn) customersGridView.Columns.Add(companyNameColumn) customersGridView.Columns.Add(cityColumn) ' Programmatically register the event handling methods. AddHandler customersGridView.RowCommand, AddressOf CustomersGridView_RowCommand AddHandler customersGridView.RowCreated, AddressOf CustomersGridView_RowCreated ' Add the GridView object to the Controls collection ' of the PlaceHolder control. GridViewPlaceHolder.Controls.Add(customersGridView) End Sub Sub CustomersGridView_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) ' If multiple ButtonField columns are used, use the ' CommandName property to determine which button was clicked. If e.CommandName = "Add" Then ' Convert the row index stored in the CommandArgument ' property to an Integer. Dim index As Integer = Convert.ToInt32(e.CommandArgument) ' Retrieve the row that contains the button clicked ' by the user from the Rows collection. Use the ' CommandSource property to access the GridView control. Dim customersGridView As GridView = CType(e.CommandSource, GridView) Dim row As GridViewRow = customersGridView.Rows(index) ' Create a new ListItem object for the customer in the row. Dim item As New ListItem() item.Text = Server.HtmlDecode(row.Cells(1).Text) + " " + Server.HtmlDecode(row.Cells(2).Text) ' If the author is not already in the ListBox, add the ListItem ' object to the Items collection of a ListBox control. If Not CustomersListBox.Items.Contains(item) Then CustomersListBox.Items.Add(item) End If End If End Sub Sub CustomersGridView_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs) ' The GridViewCommandEventArgs class does not contain a ' property that indicates which row's command button was ' clicked. To identify which row was clicked, use the button's ' CommandArgument property by setting it to the row's index. If e.Row.RowType = DataControlRowType.DataRow Then ' Retrieve the LinkButton control from the first column. Dim addButton As LinkButton = CType(e.Row.Cells(0).Controls(0), LinkButton) ' Set the LinkButton's CommandArgument property with the ' row's index. addButton.CommandArgument = e.Row.RowIndex.ToString() End If End Sub </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>GridViewCommandEventHandler Example</title> </head> <body> <form id="form1" runat="server"> <h3>GridViewCommandEventHandler Example</h3> <table width="100%"> <tr> <td style="width:50%"> <asp:placeholder id="GridViewPlaceHolder" runat="Server"/> </td> <td style="vertical-align:top; width:50%"> Customers: <br/> <asp:listbox id="CustomersListBox" runat="server"/> </td> </tr> </table> <!-- 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="CustomersSource" selectcommand="Select [CustomerID], [CompanyName], [City] From [Customers]" connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" runat="server"/> </form> </body> </html>
The following example demonstrates how to declaratively add a GridViewCommandEventHandler delegate to the RowCommand event of 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 ContactsGridView_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) ' If multiple buttons are used in a GridView control, use the ' CommandName property to determine which button was clicked. If e.CommandName = "Add" Then ' Convert the row index stored in the CommandArgument ' property to an Integer. Dim index As Integer = Convert.ToInt32(e.CommandArgument) ' Retrieve the row that contains the button clicked ' by the user from the Rows collection. Dim row As GridViewRow = ContactsGridView.Rows(index) ' Create a new ListItem object for the contact in the row. Dim item As New ListItem() item.Text = Server.HtmlDecode(row.Cells(2).Text) & " " & _ Server.HtmlDecode(row.Cells(3).Text) ' If the contact is not already in the ListBox, add the ListItem ' object to the Items collection of the ListBox control. If Not ContactsListBox.Items.Contains(item) Then ContactsListBox.Items.Add(item) End If End If End Sub </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server"> <title>GridView RowCommand Example</title> </head> <body> <form id="form1" runat="server"> <h3>GridView RowCommand Example</h3> <table width="100%"> <tr> <td style="width:50%"> <asp:gridview id="ContactsGridView" datasourceid="ContactsSource" allowpaging="true" autogeneratecolumns="false" onrowcommand="ContactsGridView_RowCommand" runat="server"> <columns> <asp:buttonfield buttontype="Link" commandname="Add" text="Add"/> <asp:boundfield datafield="ContactID" headertext="Contact ID"/> <asp:boundfield datafield="FirstName" headertext="First Name"/> <asp:boundfield datafield="LastName" headertext="Last Name"/> </columns> </asp:gridview> </td> <td style="vertical-align:top; width:50%"> Contacts: <br/> <asp:listbox id="ContactsListBox" runat="server" Height="200px" Width="200px"/> </td> </tr> </table> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the AdventureWorks sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the Web.config file. --> <asp:sqldatasource id="ContactsSource" selectcommand="Select [ContactID], [FirstName], [LastName] From Person.Contact" connectionstring="<%$ ConnectionStrings:AdventureWorks_DataConnectionString%>" runat="server"/> </form> </body> </html>
Available since 2.0
.jpeg?cs-save-lang=1&cs-lang=vb)