Como ya saben, este blog no solo es para informar, sinó para mantener una documentación sobre cosas que voy aprendiendo y descubriendo, y, de esta manera, no olvidarmelas o tener algún lugar de referencia para futuras consultas.
En este caso se trata del control HyperLinkField.
Si suelen utilizar este control a menudo, sabrán que la propiedad DataNavigateUrlFields nos sirve para indicar el nombre del campo de la clase vinculada, que queremos reemplazar en alguna parte de la propiedad DataNavigateUrlFormatString.
A continuación, un ejemplo:
<asp:HyperLinkField DataNavigateUrlFields="IdContacto" DataNavigateUrlFormatString="~/frmEditarContacto.aspx?idcontacto={0}" HeaderText="Editar" Text="Editar Contacto" />
No es muy dificil entender lo que sucede aqui.
Cuando se realice el render de la página, el control buscará la propiedad IdContacto, tomara su valor, y lo reemplazará en {0}, en la propiedad DataNavigateUrlFormatString, por lo que el URL nos quedará de la siguiente manera:
Suponiendo que el valor de IdContacto sea "32":
frmEditarContacto.aspx?idcontacto=32
Hasta ahí todo muy lindo, pero que pasa si quisieramos indicar 2 o más parametros en el mismo link?
La solución es muy sencilla. Solo debemos indicar los nombres de las propiedades en DataNavigateUrlFields, separados por una coma sin espacios, y luego vamos incrementando el indice en la propiedad DataNavigateUrlFormatString.
El Markup nos quedaría de la siguiente manera:
<asp:HyperLinkField DataNavigateUrlFields="IdContacto, IdCiudad" DataNavigateUrlFormatString="~/frmEditarContacto.aspx?idcontacto={0}&idciudad={1}" HeaderText="Editar" Text="Editar Contacto" />
Y siguiendo la lógica de lo antes explicado, el URL final nos quedaría de la siguiente manera:
Suponiendo que el valor de IdContacto sea "32"
Suponiendo que el valor de IdCiudad sea "6"
frmEditarContacto.aspx?idcontacto=32&idciudad=6
Ojalá le sea de utilidad a alguien. Saludos!