Obtener id del registro del gridview en ASP.Net

Mediante el evento RowCommand ejecutado por un botón es posible obtener el id del registro listado en un gridview en ASP.Net.

Utilizando el código C# del servidor obtendremos el id de un registro que tenga el id cargado en el gridview.

En el ejemplo se utiliza un grid con tres columnas: id, nombre y editar; en editar se coloca un botón para cada registro cargado.

Configurar elemento gridview

Para hacer posible la obtención del id necesitamos agregar a la etiqueta del grid una propiedad más, este es el DataKeyNames.

Esta propiedad lo que hace es indicar una columna que puede ser leída desde el servidor a partir del valor de la propiedad.

Agreguemos esta propiedad a aun gridview y como valor coloquemos el nombre de la columna que tiene los id de los registros.

<asp:GridView ID="gvTablaUno" runat="server" AutoGenerateColumns="false" OnRowCommand="gvTablaUno_RowCommand" DataKeyNames="id">
    <Columns>
        <asp:BoundField DataField="id" Visible="false" />
        <asp:BoundField DataField="Nombre" HeaderText="Nombre completo" />
        <asp:ButtonField Text="Editar" CommandName="Editar" />
    </Columns>
</asp:GridView>
  • Agregado de propiedad DataKeyNames con valor id.
  • La columna id no es visible en la interfaz, DataField indica el nombre de la columna.

Para agregar un poco de seguridad y posible confusión de los usuarios con la columna id, es preferible nos mostrarlo en la interfaz.

Aunque la columna no es visible, puede ser consultada desde el servidor a partir de la propiedad DataKeyNames.

Obtener id del registro en gridview

Mediante el evento Rowcommand obtendremos el id de los registros que se oprima el botón correspondiente a su registro.

Aplicando la función que vimos anteriormente para obtener el índice del registro, obtendremos el id. El código C# quedaría de la siguiente manera.

protected void gvTablaUno_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
{
    if (e.CommandName == "Editar")
    {
        int index = int.Parse(e.CommandArgument.ToString());
        int id = int.Parse(gvTablaUno.DataKeys[index].Value.ToString());
    }
}
  • Obtenemos el índice del registro seleccionado.
  • Buscamos el DataKey del registro a partir del índice, como es un entero lo convertimos para guardarlo en una variable.
  • En la variable id se almacena el ID del registro mediante las dos líneas de código dentro del if.

Podría interesarte Evento RowCommand de gridview ASP.Net  

En mi ejemplo el resultado obtenido es la siguiente, agregue un label para mostrar el id del registro seleccionado.

Obtener id del registro del gridview en ASP.Net

Deja un comentario

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