2014-06-20 21 views
0

我有一个两列GridView,日期消息。绑定到GridView数据可以包含一个或多个URL在消息塔,例如:如何检测GridView单元格内的超链接,并将它们的样式与其他文本不同?

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

我试图做的是风格只在消息列作为超链接网址,即将超链接样式应用于它们,以便正常文本将具有与超链接不同的样式/颜色。我真的不知道如何解决这个问题。有没有更好的和更便宜的解决方案比手动处理每个单元格,因为它被添加?

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=" & _ 
URLVariable & ">" & URLVariable & "</a>" 
相关问题