سؤال

ولقد كنت أحاول أن أسلط الضوء على نتيجة البحث في 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 بشكل صحيح باستثناء الصفوف من عمود "آية" التي حاولت تسليط الضوء على الكلمات الرئيسية. إذا كنت إزالة حلقة (لتسليط الضوء على كلمة مرور) داخل SearchDemo، وسوف يعمل بشكل جيد. يمكن لأي شخص أن إلقاء نظرة على هذه الرموز ويشير لي أن الاتجاه الصحيح من فضلك؟

هل كانت مفيدة؟

المحلول

وإدخال النص الخاص بك هو dtResult.Rows (ط) .ToString وهو "System.Data.DataRow".

وتغيير هذا السطر:

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

ل:

Dim strTemp As String = dtResult.Rows(i)("verse").ToString
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top