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:
Excelente ayuda.
Mil gracias.
Publicar un comentario