Como vincular o URL de um GridView HyperLinkField quando o valor vinculado contém dois pontos?
Estou tentando vincular um GridView HyperLinkField, de modo que a coluna vinculada seja usada como um valor de parâmetro na URL. Material bastante padrão - nada sofisticado, mas a ligação falha quando a coluna vinculada contém dois pontos, ou seja,:
. No meu caso particular, esse valor é uma sequência que representa uma duração de tempo, por exemplo "14:35" ou "1:07:19".
Aqui está o meu GridView, com o valor do tempo vinculado ao URL do HyperLinkFiel
<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>
Produz HTML como este. Observe que o<a>
tags não têmhref
attribute.
<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>
Mas se eu alternar o campo vinculado de RunTime para Year, ou seja, para uma coluna que não contenha dois pontos nos valores, ela funcionará conforme o esperado. Pegue o GridView acima e altere o atributo DataNavigateUrlFields do HyperLinkField, da seguinte maneira:
<asp:HyperLinkField DataNavigateUrlFields="Year"
DataTextField="RunTime" HeaderText="Hyperlink"
DataNavigateUrlFormatString="LinkedPage.aspx?param={0}" />
E agora a saída HTML está correta, assim:
<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>
Então, a porca da minha pergunta é esta: como vincular uma coluna de dados com valores que contêm dois pontos ao URL de um HyperLinkField? Ou, na sua falta, crie o mesmo hiperlink vinculado por outro método?
Alterar o formato dos dados para não incluir dois pontos seria o último recurso, pois o LinkedPage.aspx espera o valor do parâmetro nesse formato e ele já está gravado, testado e em us