我设置了一个gridview来在网页上显示搜索结果。
我在下面的代码“应该”替换搜索字词的任何实例,并使用该字词的粗体版本。
我尝试了很多不同的版本,但没有任何工作。
Private Sub gvSearchResults_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvSearchResults.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
For Each cell As TableCell In e.Row.Cells
If cell.Text.Contains(searchTerm) Then
cell.Text = cell.Text.Replace(Session("SearchTerm"), "<span style='font-weight: bold;'>" & Session("SearchTerm") & "</span>")
End If
Next
End If
End Sub
我的逻辑中是否有任何遗漏?
谢谢!
答案 0 :(得分:1)
代码中有一个可疑的searchTerm
变量。
请注意,在您的代码中,您使用的是searchTerm
变量 以及 Session("SearchTerm")
。
我会这样做:
searchTerm = Session("SearchTerm")
If cell.Text.Contains(searchTerm) Then
cell.Text = cell.Text.Replace(searchTerm , "<span style='font-weight: bold;'>" & searchTerm & "</span>")
End If
答案 1 :(得分:1)
如果Cell.Text
为空,那么gridview可能会在Cell.Controls
集合中放置一个Literal控件。你应该把这样的东西放在:
If e.Row.RowType = DataControlRowType.DataRow Then
For Each cell As TableCell In e.Row.Cells
If cell.Controls.Count > 0 Then
Dim ltl as Literal = CType(cell.Controls(0), Literal)
If ltl.Text.Contains(searchTerm) Then
cell.Text = cell.Text.Replace(Session("SearchTerm"), "<span style='font-weight: bold;'>" & Session("SearchTerm") & "</span>")
End If
End If
Next
End If