Как привязать URL-адрес GridView HyperLinkField, если связанное значение содержит двоеточие?

Я пытаюсь привязать 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, подобный этому. Обратите внимание, что теги не имеют атрибута 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 ожидает значение параметра в этом формате, а он уже записан, протестирован и используется.

6
задан Taz 12 May 2012 в 21:00
поделиться