2009-03-05 13 views
0

Veri sayfasındaki bir arama sonucunu vurgulamaya çalışıyorum. İlk olarak, DataTable satırları arasında dolaşıyorum ve bu kelimeleri vurgulamak için eşleşen bir anahtar kelime aramak üzere bir işlev çağırın, sonra da DataTable satırını vurgulanmış anahtar sözcüklerle yeni bir dizeyle güncelleyin.Hatası - Belirtiler System.Data.DataRow

DataLable dtResult öğesini DataList'e bağlarım. Ben anahtar kelimeyi vurgulamak için SearchDemo işlevine bu kod bloğunu eklendi dek işime yaramıştı: DataList içinde bulunan bir etiket bu "ayet" sütunu bağlı


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 

System.Data.DataRow gösterir. Gerisi doğru verileri gösterir.

şu kod bloğunu bakınız:

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

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 

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

Aşağıdaki bu iki işlev düzgün çalışıyor.

'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 Her diğer satırlar Anahtar kelimeleri vurgulamak için çalıştı sütun "ayet" sıraları dışında düzgün gösterilmiştir. SearchDemo içinde bir döngü (anahtar kelimeleri vurgulamak için) kaldırırsam, iyi çalışır. Bu kodlara bakıp bana doğru yolu gösterebilir mi lütfen?

cevap

0

Giriş metniniz dtResult.Rows (i) .ToString olan "System.Data.DataRow".

Değişim bu satırı:

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

için: gözlerim .. sorun olur

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

Teşekkür .. ah .. ne de böyle sth hata ayıklamak için söyle mümkün –

+0

ilk eğer adım, hatanın kodunuzda olduğunu varsaymaktır. http://www.codinghorror.com/blog/archives/001079.html Buradan çalışarak, kodun 'üst kısmında' bir kesme noktası belirledim ve değişken değerleri izledim. StrTemp değerini oldukça hızlı bir şekilde görürdünüz. – Mufaka

+0

Çok teşekkürler. İyi günler: D –

İlgili konular