Estoy intentando vincular un GridView HyperLinkField de manera que la columna enlazada se use como un valor de parámetro en la URL. Bastante estándar: nada sofisticado, pero el enlace falla cuando la columna enlazada contiene dos puntos, es decir, :
. Soy mi caso particular, este valor es una cadena que representa un período de tiempo, p. "14:35" o "1:07:19".Cómo enlazar la URL de un GridView HyperLinkField cuando el valor enlazado contiene dos puntos?
Aquí está mi GridView, con el valor de tiempo vinculado a la url de HyperLinkField.
<asp:GridView ID="ResultsGridView" runat="server" AutoGenerateColumns="False"
DataSourceID="ResultsDataSource" EnableModelValidation="True"
AllowPaging="True">
<Columns>
<asp:BoundField DataField="Year" HeaderText="Year" SortExpression="Year" />
<asp:HyperLinkField DataNavigateUrlFields="RunTime"
DataTextField="RunTime" HeaderText="Hyperlink"
DataNavigateUrlFormatString="LinkedPage.aspx?param={0}" />
<asp:BoundField DataField="RunTime" HeaderText="Time"
SortExpression="RunTime" />
<asp:BoundField DataField="FullName" HeaderText="Name"
SortExpression="FullName" ReadOnly="True" />
</Columns>
</asp:GridView>
Produce HTML como este. Tenga en cuenta que las etiquetas <a>
no tienen el atributo href
.
<tr>
<td>2010</td><td><a>34:58</a></td><td>34:58</td><td>Joe Schmoe</td>
</tr><tr>
<td>2010</td><td><a>35:30</a></td><td>35:30</td><td>Rod Krueger</td>
</tr><tr>
<td>2010</td><td><a>35:38</a></td><td>35:38</td><td>Mike Johnson</td>
</tr>
Pero si cambio el campo enlazado de tiempo de ejecución para el año, es decir, a una columna que no contiene dos puntos en los valores, que funciona como se espera. Tome el GridView anterior, y cambiar el atributo DataNavigateUrlFields del HyperLinkField, así:
<asp:HyperLinkField DataNavigateUrlFields="Year"
DataTextField="RunTime" HeaderText="Hyperlink"
DataNavigateUrlFormatString="LinkedPage.aspx?param={0}" />
Y ahora la salida HTML es correcta, así:
<tr>
<td>2010</td><td><a href="LinkedPage.aspx?param=2010">34:58</a></td><td>34:58</td><td>Joe Schmoe</td>
</tr><tr>
<td>2010</td><td><a href="LinkedPage.aspx?param=2010">35:30</a></td><td>35:30</td><td>Rod Krueger</td>
</tr><tr>
<td>2010</td><td><a href="LinkedPage.aspx?param=2010">35:38</a></td><td>35:38</td><td>Mike Johnson</td>
</tr><tr>
Así que la tuerca de mi pregunta es la siguiente : ¿cómo puedo vincular una columna de datos con valores que contienen dos puntos a la URL de un HyperLinkField? O, en su defecto, ¿crear el mismo hipervínculo enlazado por otro método?
Cambiar el formato de los datos para no incluir dos puntos sería un último recurso, porque LinkedPage.aspx espera el valor del parámetro en ese formato, y ya está escrito, probado y en uso.
¿Cómo se puede usar este hipervínculo para cargar una segunda vista de cuadrícula en la misma página? – aspiring
@aspiring use un LinkButton o ImageButton, adjunte un controlador para el evento ItemCommand, luego un UpdatePanel donde incluya la segunda grilla. El código del controlador de eventos es para vincular el origen de datos de esta cuadrícula. –
No estoy seguro de qué quiere decir con un panel de actualización. El campo actual es un Boundfield simple para mostrar un nombre en la vista de cuadrícula. Entonces, si voy a usar un botón de enlace, tendré que encontrar una manera de mostrar los datos de db en el botón de enlace como texto o sth. Tal vez podría publicar una respuesta [aquí.] (Http://stackoverflow.com/q/30188620/2061309) Voy a buscar y probar su sugerencia. – aspiring