jueves, 13 de diciembre de 2007

Gridview: recuperar el índice de la fila desde un template field

Caso práctico: para cada fila de un GridView quieres poner un enlace/botón que realice cierta operación (llamémosle "pitufar") con el registro de esa fila. Sin problemas: editas las columnas del GridView y le metes un ButtonField con:

text="Pitufar"
CommandName="Pitufar"

Luego en el evento RowCommand del GridView te marcas un bonito:
If e.CommandName = "Pitufar" Then
  GridView1.SelectedIndex = Convert.ToInt32(e.CommandArgument)
  pitufeame(GridView1.SelectedValue)
  GridView1.DataBind()
End If

Y ya lo tienes.

Pero... ¿Y si necesitas convertir ese ButtonField a TemplateField? Mala cosa, porque entonces el código del RowCommand dejará de funcionar por la sencilla razón de que en e.CommandArgument ya no tendrás el índice de la fila que han clickeado.

Solución: En la propiedad CommandArgument del TemplateField hay que poner:



Y todo vuelve a funcionar.

1 comentario:

Anónimo dijo...

Excelente ayuda.

Mil gracias.