Ich habe versucht, ein Suchergebnis in DataTable hervorzuheben. Zuerst durchlaufe ich Zeilen von DataTable und rufe eine Funktion auf, um nach einem übereinstimmenden Schlüsselwort zu suchen, um diese Wörter hervorzuheben, und aktualisiere dann die DataTable-Zeile mit einer neuen Zeichenfolge mit hervorgehobenen Schlüsselwörtern.Fehler - Lable zeigt System.Data.DataRow
Ich binde das DataTable dtResult an die DataList. Es funktionierte gut, bis ich diesen Code-Block zu SearchDemo Funktion hinzugefügt, um das Schlüsselwort zu markieren:
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
Ein Etikett im Innern des Datalist diese „Vers“ Säule gebunden zeigt System.Data.DataRow. Der Rest zeigt die korrekten Daten.
Bitte lesen Sie den folgenden Codeblock:
.........................
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
... .................................................. ....
Diese zwei Funktionen unten funktionieren gut.
'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
Alle anderen Zeilen der Datatable dtResul ordnungsgemäß mit Ausnahme der Zeilen der Spalte „Vers“ gezeigt, dass ich die Keywords zu markieren versucht. Wenn ich eine Schleife (um Schlüsselwörter hervorzuheben) innerhalb des SearchDemo entferne, funktioniert es gut. Kann mir jemand diese Codes ansehen und mich bitte in die richtige Richtung weisen?
Dank .. ah .. meine Augen .. würde mich etwas dagegen sagen, wie wie dies auch zu debuggen sth, wenn möglich –
Die erste Schritt ist anzunehmen, dass der Fehler in Ihrem Code ist. http://www.codinghorror.com/blog/archives/001079.html Von dort aus arbeitete ich einen Haltepunkt an der Spitze des Codes und beobachtete die Variablenwerte, als ich durchging. Sie hätten den strTemp-Wert ziemlich schnell gesehen. – Mufaka
Vielen Dank. Habt einen schönen Tag: D –