2009-03-05 11 views
0

J'ai essayé de mettre en évidence un résultat de recherche dans DataTable. Tout d'abord, je parcourt les lignes de DataTable et appelle une fonction pour rechercher un mot clé correspondant afin de mettre en évidence ces mots, puis je mets à jour la ligne DataTable avec une nouvelle chaîne avec des mots-clés en surbrillance.Erreur - Lable affiche System.Data.DataRow

Je lie le DataTable dtResult à la DataList. Il a bien fonctionné jusqu'à ce que j'ajouté ce bloc de code à la fonction SearchDemo pour mettre en évidence le mot-clé:


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 

Une étiquette à l'intérieur du DataList lié cette colonne « verset » montre System.Data.DataRow. Le reste montre les données correctes.

S'il vous plaît voir le bloc de code suivant:

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

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 

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

Ces deux fonctions ci-dessous fonctionnent correctement.

'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 

Toutes les autres lignes de la DataTable dtResul sont présentés correctement à l'exception des lignes de la colonne « vers » que j'ai essayé de mettre en évidence les mots-clés. Si je supprime une boucle (pour mettre en évidence des mots-clés) à l'intérieur du SearchDemo, cela fonctionnera correctement. Quelqu'un peut-il jeter un oeil à ces codes et me diriger vers la bonne direction s'il vous plaît?

Répondre

0

Votre texte d'entrée est dtResult.Rows (i) .ToString qui est "System.Data.DataRow".

Modifier cette ligne:

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

Pour:

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

Merci .. ah .. mes yeux .. serait bien me dire comment déboguer STH comme cela aussi, si possible –

+0

La première l'étape consiste à supposer que l'erreur est dans votre code. http://www.codinghorror.com/blog/archives/001079.html En travaillant à partir de là, j'ai défini un point d'arrêt au sommet du code et j'ai regardé les valeurs des variables au fur et à mesure que je passais. Vous auriez vu la valeur de strTemp assez rapidement. – Mufaka

+0

Merci beaucoup. Bonne journée: D –

Questions connexes