Si tienes un GridView y quieres realizar una acción personalizada, basta con agregar una columna ButtonField, y pasar el iddel registro que seleccionaron.

El GridView:

  1. <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" AllowPaging="True" AllowSorting="True" CellPadding="0" PageSize="30" GridLines="None" Width="100%" DataKeyNames="id">
  2.     <Columns>
  3.         <asp:BoundField DataField="id" HeaderText="ID" InsertVisible="False" SortExpression="id" />
  4.         <asp:BoundField DataField="status" HeaderText="Status" SortExpression="status" />
  5.         <asp:ButtonField CommandName="ConmutarStatus" HeaderText="Conmutar status" Text="Conmutar" ButtonType="Link" />
  6.    </Columns>
  7. </asp:GridView>

Nota la propiedad DataKeyNames. La establecí en id porque ese es el nombre de mi columna llave en la tabla.

Cada vez que se hace clic en la columna ButtonField, se dispara el evento RowCommand y es ahí donde debemos realizar la acción.

  1. Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
  2.         If e.CommandName = "ConmutarStatus" Then
  3.  
  4.             Dim indice As Integer = Convert.ToInt32(e.CommandArgument)
  5.             Dim id As Integer = GridView1.DataKeys(indice).Value
  6.             'Ahora en id tenemos el id de nuestra tabla.
  7.             'Podemos realizar cualquier acción con este valor.
  8.  
  9.  
  10.         End If
  11.     End Sub

10 comentarios sobre “Cómo pasar el id en un ButtonField de Gridview

  1. Saludos,
    y disculpa mi torpesa, entiendo tu codigo donde atrapa el ide de la tabal, pero no se como trabajar con este ide
    por ejemplo si en el momento que de click el usuario en el buttonfield megustaria enviar un mensaje, ¿como podria hacer esto)

  2. xD hera algo muy simple ya lo resolvi gracias…

      protected void gdvCita_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
    
            {
                try
                {
                    if (e.CommandName == "ConmutarHorario")
                    {
                        int indice = Convert.ToInt32(e.CommandArgument);
                        int id = Convert.ToInt32(gdvCita.DataKeys[indice].Value);
                        //Ahora en id tenemos el id de nuestra tabla.
                        //Podemos realizar cualquier acción con este valor.
                    }
    
                }
                catch (Exception ex)
                {
                    
                    throw;
                }
    

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


+ 5 = catorce