#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>"