2012-05-24 4 views
0

Я установил сетку для отображения результатов поиска на веб-странице.gridview not highlight search term

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

Я пробовал много разных версий, но ничего не работает.

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 

Есть ли недостающие в моей логике?

Спасибо!

+1

Запустили ли вы отладочную версию, чтобы проверить, что cell.Text не пуст? Много раз gridviews помещает текст такого характера в литеральный контроль. –

+0

Привет, Джоэл, спасибо ... Я просто сделал. По какой-то причине весь мой cell.text пуст ... хотя все они заполнены текстом на веб-странице – SkyeBoniwell

ответ

1

Если Cell.Text пусто, то скорее всего GridView ставит Символьную контроль в Cell.Controls коллекции. Вы должны поместить что-то вроде этого в:

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 
+0

ltl.Text также пуст ... но я вижу результаты в моем gridview на странице ... Когда я смотрю на ячейку в инструментах Chrome dev, HTML выглядит так: Сердечник SkyeBoniwell

+1

@ 999cm999: Я видел это раньше. Это означает, что в коллекции есть несколько элементов управления. Вы должны попробовать 1 и 2, а также просто посмотреть, где это происходит. –

+0

Прошу прощения ... 1 и 2? Я не уверен, что вы имеете в виду ... – SkyeBoniwell

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 
+0

Да, я пробовал это ... Я поставил переменную там, надеясь, что это поможет – SkyeBoniwell

+1

. Тогда вы запустите debug, как предложил Джоэл в комментариях? Вы подтвердили, что cell.Text содержит значение? Означает ли ваша точка останова код 'cell.Text ='? – Jeremy

+0

Я вставляю некоторые точки останова и появляется как cell.Text всегда пуст ... что не имеет смысла, потому что я вижу все результаты на своей странице – SkyeBoniwell