Как обнаружить гиперссылки внутри ячейки GridView и оформить их иначе, чем другой текст?

#asp.net #gridview

#asp.net #gridview

Вопрос:

У меня есть GridView с двумя столбцами, датой и сообщением. Данные, привязанные к GridView, могут содержать один или несколько URL-адресов в столбце сообщения, например:

 Date        Message
6/18/2014   "Site http://somesite was created."
6/18/2014   "There was a problem when trying to access https://www.google.com"
...
 

То, что я пытаюсь сделать, это оформить только URL-адреса в столбце сообщения как гиперссылки, т. Е. Применить к ним стиль гиперссылки, чтобы обычный текст имел другой стиль / цвет, чем гиперссылки. Я действительно не знаю, как подойти к этому. Есть ли лучшее и менее дорогостоящее решение, чем обработка каждой ячейки вручную по мере ее добавления?

GridView:

 <asp:GridView ID="gridView1" runat="server" 
AutoGenerateColumns="false"
Width="100%"
CssClass="gridviewstlye"        
EnableModelValidation="True">
<AlternatingRowStyle CssClass="gridviewalter" />
<Columns>
    <asp:BoundField DataField="Date" HeaderText="Date" />       
    <asp:BoundField DataField="Message" HeaderText="Message"/>
</Columns>
<HeaderStyle HorizontalAlign="Left" Font-Bold="True" Height="33px" />   
<RowStyle CssClass="gridrowstyle" />
 

Ответ №1:

У вас не может быть разных стилей для текста, если он находится внутри одного элемента.

С другой стороны, будет очень утомительно обрабатывать его из кода.

Вам нужно перебрать элементы вашего gridview и найти строку, содержащую http.

Если у него есть http, вам нужно подсчитать экземпляр слова http и создать цикл.

Внутри цикла вам нужно найти http и пробел рядом с ним (для извлечения URL). Сохраните его в переменной и получите что-то вроде

 r.Cells(1).Text = r.Cells(1).Text.Replace(URLVariable, "<a href=" amp; _
URLVariable amp; ">" amp; URLVariable amp; "</a>"