خطأ - علامة مميزة يظهر 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
وتسمية داخل 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