Algo muy común a la hora de mostrar un listado, es cargar un DataGrid con información básica y añadir un campo enlace que nos lleva a otra página donde se muestra la información detallada de ese registro. Pongamos el siguiente caso:
Tenemos un listado de usuarios, y un enlace que nos abre el detalle del usuario seleccionado, pero este enlace debe pasar 2 parametros via GET, por un lado el id que nos servirá para hacer la Select correspondiente en la página de detalle, y otra el estado que es un campo de la tabla usuarios que indica si el usuario está activo (1) o inactivo (0), ya que en la página de detalle se visionarán distintos campos y se podrán realizar distintas acciones dependiendo del estado del usuario. Por lo tanto, nuestros enlaces del DataGrid deben tener este formato:
Vámos a ello:
Arrastramos el DataGrid al escenario, lo seleccionamos y nos vamos al Generador de Propiedades:
Nos vamos al apartado columnas, y allí:
Ésto es lo que tendríamos que hacer si solo quisiéramos un enlace por GET, sin embargo no podemos añadir un segundo enlace a través del Generador de Propiedades del DataGrid, para ello:
Como véis, la variable via GET (id) no tiene que tener el mismo nombre que la fuente de datos (id_usuario).
Bien, damos a aceptar y lo siguiente será editar la columna plantilla para añadir los demás enlaces:
Seleccionamos el enlace en la nueva vista que aparecerá, nos vamos a sus propiedades, y hacemos click en el botón de la propiedad DataBindings, lo que nos abrirá la siguiente pantalla:
En esta nueva pantalla, seleccionamos la propiedad NavigateUrl y donde dice:
DataBinder.Eval(Container, "DataItem.id_usuario", "detalle.aspx?id={0}")
Lo cambiamos por:
DataBinder.Eval(Container, "DataItem.id_usuario", "detalle.aspx?id={0}") +
DataBinder.Eval(Container, "DataItem.estado", "&estado={0}")
Y así vamos añadiendo el resto de variables que queremos cargar dinámicamente en el enlace del DataGrid.
Finalmente, todo lo anterior habtá añadido a nuestro DataGrid la siguiente columna Template:
<asp:TemplateColumn> <ItemTemplate> <asp:HyperLink id=HyperLink1 runat="server" Text="Ver Detalle" NavigateUrl='<%#
DataBinder.Eval(Container, "DataItem.id_usuario", "detalle.aspx?id={0}") +
DataBinder.Eval(Container, "DataItem.estado", "&estado={0}") %>'>Ver Detalle
</asp:HyperLink> </ItemTemplate> </asp:TemplateColumn>
Para más información consulte la referencia del MSDN.