Вопрос

Я пытался выделить результат поиска в DataTable.Сначала я перебираю строки DataTable и вызываю функцию для поиска соответствующего ключевого слова, чтобы выделить эти слова, затем обновляю строку DataTable новой строкой с выделенными ключевыми словами.

Я привязываю DataTable dtResult к datalistу.Это работало нормально, пока я не добавил этот блок кода в функцию SearchDemo, чтобы выделить ключевое слово :


    For i = 0 To dtResult.Rows.Count - 1 Step 1

        Dim strTemp As String = dtResult.Rows(i).ToString
        strVerse = blHelper.Highlight(s, strTemp)
        dtResult.Rows(i)("verse") = strVerse
    Next

Метка внутри списка данных, привязанная к этому столбцу "verse", показывает System.Data.DataRow.Остальное показывает правильные данные.

Пожалуйста, ознакомьтесь со следующим блоком кода :

.........................

Public Shared Function SearchDemo(ByVal s As String) As DataTable

    Dim dtResult As New DataTable

    dtResult = SearchDetail(s) 

    Dim i As Integer = dtResult.Rows.Count

    For i = 0 To dtResult.Rows.Count - 1 Step 1

        Dim strTemp As String = dtResult.Rows(i).ToString
        strVerse = blHelper.Highlight(s, strTemp)
        dtResult.Rows(i)("verse") = strVerse

    Next

    Return dtResult
End Function

.........................................................

Эти две функции, приведенные ниже, работают нормально.

    'Highlight the keywords in the returned result

Public Shared Function Highlight(ByVal Search_Str As String, ByVal InputTxt As String) As String

    ' Setup the regular expression and add the Or operator.
    Dim RegExp As Regex = New Regex(Search_Str.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase)

    ' Highlight keywords by calling the MatchEvaluator delegate each time a keyword is found.
    Highlight = RegExp.Replace(InputTxt, New MatchEvaluator(AddressOf ReplaceKeyWords))

    ' Set the Regex to nothing.
    RegExp = Nothing

End Function

Public Shared Function ReplaceKeyWords(ByVal m As Match) As String

    Return "<b>" & m.Value & "</b>"

End Function

Все остальные строки DataTable dtResul отображаются правильно, за исключением строк столбца "verse", в которых я попытался выделить ключевые слова.Если я удалю цикл (для выделения ключевых слов) внутри SearchDemo, он будет работать нормально.Кто - нибудь может взглянуть на эти коды и указать мне правильное направление , пожалуйста?

Это было полезно?

Решение

Ваш входной текст - dtResult.Строки (i).toString, которая является "System.Data.DataRow".

Измените эту строку:

Dim strTemp As String = dtResult.Rows(i).ToString

Для:

Dim strTemp As String = dtResult.Rows(i)("verse").ToString
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top