Да, это может иметь смысл, но я думаю, что это применимо, только если у вас есть {}, но кто знает ...
аюсь связать 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 ожидает значение параметра в этом формате, и оно уже написано, протестировано и используется.