【问题标题】:Error - Lable shows System.Data.DataRow错误 - 标签显示 System.Data.DataRow
【发布时间】:2009-03-05 07:01:49
【问题描述】:

我一直试图在 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 内的标签绑定此“诗句”列显示 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 中删除一个循环(以突出显示关键字),它将正常工作。 任何人都可以看看这些代码并指出正确的方向吗?

【问题讨论】:

    标签: vb.net datatable


    【解决方案1】:

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

    改变这一行:

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

    收件人:

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

    【讨论】:

    • 谢谢..啊..我的眼睛..如果可能的话,介意告诉我如何调试这样的东西
    • 第一步是假设错误在您的代码中。 codinghorror.com/blog/archives/001079.html 从那里开始工作,我会在代码的“顶部”设置一个断点,并在我逐步执行时观察变量值。您会很快看到 strTemp 值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多