Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
Al hacer clic con un botón en un control GridView, se produce el evento RowCommand. El control GridView tiene funcionalidad integrada para operaciones como edición, eliminación y paginación. Puede agregar asimismo botones y utilizar el evento RowCommand para agregar funcionalidad personalizada al control.
Puede agregar funcionalidad personalizada a un control GridView de las maneras siguientes:
Agregando un campo ButtonField al control GridView.
Agregando controles Button, LinkButton o ImageButton a una plantilla en el control GridView.
Puede utilizar la propiedad CommandName del argumento de evento para identificar la función del botón en el método de control de eventos. Si está trabajando con objetos TemplateField o ButtonField, también puede utilizar la propiedad CommandArgument para identificar la fila actual. Si está utilizando un objeto ButtonField, la propiedad CommandArgument se establece automáticamente en el índice de fila. Si está utilizando un objeto TemplateField, el control no establece automáticamente la propiedad CommandArgument. En ese caso, si tiene que determinar el índice de fila en el controlador de eventos, puede establecer la propiedad CommandArgument del botón en el índice de fila mediante una expresión de enlace de datos.
Para responder a eventos de botón en el control GridView
Establezca la propiedad CommandName del botón en una cadena que identifique su función, como "Print" o "Copy".
Si está utilizando el objeto TemplateField y debe tener acceso al índice de fila en el método de control de eventos, establezca la propiedad CommandArgument del botón en una expresión que identifique la fila actual.
En el ejemplo siguiente se muestra cómo se puede establecer la propiedad CommandArgument de un botón en una columna TemplateField en el índice de fila actual. En el ejemplo, la columna contiene un control Button que muestra un carro de la compra.
<asp:TemplateField> <ItemTemplate> <asp:Button ID="AddButton" CommandName="AddToCart" CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>" Text="Add to Cart" /> </ItemTemplate> </asp:TemplateField><asp:TemplateField> <ItemTemplate> <asp:Button ID="AddButton" CommandName="AddToCart" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" Text="Add to Cart" /> </ItemTemplate> </asp:TemplateField>Cree un método para el evento RowCommand del control GridView. En el método, haga lo siguiente:
Compruebe la propiedad CommandName del objeto argumento del evento para ver qué cadena de comando se ha transferido.
Recupere el índice de la fila que contiene el botón utilizando la propiedad CommandArgument, si se requiere.
Ejecute la lógica adecuada para el botón en que hizo clic el usuario.
En el ejemplo siguiente se muestra cómo se puede responder a un clic del botón en un control GridView. En el ejemplo, un botón en una columna TemplateField envía el comando "AddToCart". El controlador de eventos RowCommand determina en qué botón se hizo clic. Si fuera el botón de carro de la compra, el código ejecuta la lógica correspondiente.
Protected Sub GridView1_RowCommand(ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) If (e.CommandName = "AddToCart") Then ' Retrieve the row index stored in the CommandArgument property. Dim index As Integer = Convert.ToInt32(e.CommandArgument) ' Retrieve the row that contains the button ' from the Rows collection. Dim row As GridViewRow = GridView1.Rows(index) ' Add code here to add the item to the shopping cart. End If End Subprotected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "AddToCart") { // Retrieve the row index stored in the // CommandArgument property. int index = Convert.ToInt32(e.CommandArgument); // Retrieve the row that contains the button // from the Rows collection. GridViewRow row = GridView1.Rows[index]; // Add code here to add the item to the shopping cart. } }Para consultar un ejemplo en el que se utiliza la clase ButtonField, vea la documentación del evento GridView.RowCommand.
Vea también
Tareas
Cómo: Responder a los eventos de botón en elementos DataList o Repeater
Referencia
Información general sobre GridView (Control de servidor Web)