منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : البحث داخل listview
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
عندى listview اريد كود بحث داخل textbox يبحث داخل listview محملة بيانات من قاعدة البيانات
(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
اجعل عندك من 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)