Я пытаюсь связать GridView HyperLinkField таким образом, чтобы связанный столбец использовался в качестве значения параметра в URL.Довольно стандартный материал - ничего особенного, но привязка завершается неудачно, когда связанный столбец содержит двоеточие, то есть :
.В моем конкретном случае это значение представляет собой строку, представляющую продолжительность времени, например, «14:35» или «1:07:19».
Вот мой GridView со значением времени, привязанным кURL-адрес 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>
Он генерирует HTML, как это.Обратите внимание, что теги <a>
не имеют атрибута 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>
Но если я переключу связанное поле с RunTime на Year, то есть на столбец, который не содержит двоеточия в значениях,это работает как ожидалось.Возьмите GridView выше и измените атрибут DataNavigateUrlFields HyperLinkField, например, так:
<asp:HyperLinkField DataNavigateUrlFields="Year"
DataTextField="RunTime" HeaderText="Hyperlink"
DataNavigateUrlFormatString="LinkedPage.aspx?param={0}" />
И теперь вывод HTML верен, например:
<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>
Итак, гайкау меня такой вопрос: как связать столбец данных со значениями, которые содержат двоеточие, к URL-адресу HyperLinkField?Или, если это не удастся, создать такую же связанную гиперссылку другим методом?
Изменение формата данных, чтобы не включать двоеточие, было бы последним средством, поскольку LinkedPage.aspx ожидает значение параметра в этом формате, и оно уже записано, протестировано и используется.