エラー-ラベルにSystem.Data.DataRowが表示されます
質問
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"をバインドする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
............................................................... ..........
以下の2つの関数は正常に動作します。
'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.Rows(i).ToStringで、これは&quot; System.Data.DataRow&quot;です。
この行を変更します:
Dim strTemp As String = dtResult.Rows(i).ToString
宛先:
Dim strTemp As String = dtResult.Rows(i)("verse").ToString
所属していません StackOverflow