منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
البحث داخل listview - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : البحث داخل listview (/showthread.php?tid=42156)



البحث داخل listview - Lathe1 - 14-08-22

عندى listview اريد كود بحث داخل textbox يبحث داخل listview محملة بيانات من قاعدة البيانات


RE: البحث داخل listview - asmarsou - 14-08-22

(14-08-22, 04:18 PM)Lathe1 كتب : عندى listview اريد كود بحث داخل textbox يبحث داخل listview محملة بيانات من قاعدة البيانات

السلام عليكم
اخي الكريم  جرب الكود التالي مع مراعات تغيير المسميات
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       ListView1.SelectedItems.Clear()
       For i = 0 To ListView1.Items.Count - 1
           If ListView1.Items(i).SubItems(0).Text = TextBox1.Text Then
               ListView1.Items(i).Selected = True

           End If
       Next
       ListView1.Focus()
   End Sub



RE: البحث داخل listview - Taha Okla - 14-08-22

اجعل عندك من ListView1   - ListView2    - TextBox1 - TextBox2

أجعل ListView1  تأخذ بياناتها من قاعدة البيانات

ثم انقل الكود التالي إلى برنامجك ..
كود :
   Private Sub SearchWord1(strWord As String, listv1 As ListView, listv2 As ListView)
       listv2.Items.Clear()
       If listv1.Items.Count <= 0 Then Exit Sub
       If Trim(strWord) = "" Then
           For i = 0 To ListView1.Items.Count - 1
               listv2.Items.Add(listv1.Items(i).Text)
           Next
           Exit Sub
       End If

       For i = 0 To ListView1.Items.Count - 1
           If LCase(strWord) = LCase(Mid(listv1.Items.Item(i).Text, 1, Len(strWord))) Then
               listv2.Items.Add(listv1.Items(i).Text)
           End If
       Next

   End Sub
   Private Sub SearchWord2(strWord As String, listv1 As ListView, listv2 As ListView)
       listv2.Items.Clear()
       If listv1.Items.Count <= 0 Then Exit Sub
       If Trim(strWord) = "" Then
           For i = 0 To ListView1.Items.Count - 1
               listv2.Items.Add(listv1.Items(i).Text)
           Next
           Exit Sub
       End If

       For i = 0 To listv1.Items.Count - 1
           For j = 1 To Len(listv1.Items.Item(i).Text)
               If LCase(strWord) = LCase(Mid(listv1.Items.Item(i).Text, j, Len(strWord))) Then
                   listv2.Items.Add(listv1.Items(i).Text)
                   Exit For
               End If
           Next


       Next

   End Sub
   Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
       SearchWord1(TextBox1.Text, ListView1, ListView2)
   End Sub

   Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
       SearchWord2(TextBox2.Text, ListView1, ListView2)
   End Sub



ListView2     ستعرض ما تبحث عنه في الـ TextBox1 - أو  - TextBox2

TextBox1  : تبحث فيها ما يتشابه في بداية الاسم فقط  وتعرضه في ListView2.

TextBox2  : تبحث فيها ما يتشابه في أي جزء من الاسم  وتعرضه في ListView2.



في حال لا يوجد نص في التكست بوكس يجب أن تعرض لك كافة العناصر ..
وف يحال وجد نص تبدأ التصفية وعرض ما يتشابه بحسب طريقة البحث.

--
لجمالية الشكل : 
1 - بإمكانك جعل الـ ListView1   مخفية . والـ ListView2  هي الظاهرة فقط وهي من تقوم بعرض 
2 - بعد كود التعبئة من قاعدة البيانات أكتب الكود التالي ليقوم بتعبئة الـ ListView2    من الـ ListView1  :
كود :
SearchWord1(TextBox1.Text, ListView1, ListView2)