错误 - Lable显示System.Data.DataRow

时间:2009-03-05 07:01:50

标签: vb.net datatable

我一直在尝试在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

DataList中的一个Label绑定了这个“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中删除一个循环(以突出显示关键字),它将正常工作。 任何人都可以查看这些代码并指出正确的方向吗?

1 个答案:

答案 0 :(得分:0)

您的输入文本是dtResult.Rows(i).ToString,它是“System.Data.DataRow”。

更改此行:

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

要:

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