14-08-22, 04:18 PM
14-08-22, 07:36 PM
(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 Sub14-08-22, 09:51 PM
اجعل عندك من ListView1 - ListView2 - TextBox1 - TextBox2
أجعل ListView1 تأخذ بياناتها من قاعدة البيانات
ثم انقل الكود التالي إلى برنامجك ..
ListView2 ستعرض ما تبحث عنه في الـ TextBox1 - أو - TextBox2
TextBox1 : تبحث فيها ما يتشابه في بداية الاسم فقط وتعرضه في ListView2.
TextBox2 : تبحث فيها ما يتشابه في أي جزء من الاسم وتعرضه في ListView2.
في حال لا يوجد نص في التكست بوكس يجب أن تعرض لك كافة العناصر ..
وف يحال وجد نص تبدأ التصفية وعرض ما يتشابه بحسب طريقة البحث.
--
لجمالية الشكل :
1 - بإمكانك جعل الـ ListView1 مخفية . والـ ListView2 هي الظاهرة فقط وهي من تقوم بعرض
2 - بعد كود التعبئة من قاعدة البيانات أكتب الكود التالي ليقوم بتعبئة الـ ListView2 من الـ ListView1 :
أجعل 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 SubListView2 ستعرض ما تبحث عنه في الـ TextBox1 - أو - TextBox2
TextBox1 : تبحث فيها ما يتشابه في بداية الاسم فقط وتعرضه في ListView2.
TextBox2 : تبحث فيها ما يتشابه في أي جزء من الاسم وتعرضه في ListView2.
في حال لا يوجد نص في التكست بوكس يجب أن تعرض لك كافة العناصر ..
وف يحال وجد نص تبدأ التصفية وعرض ما يتشابه بحسب طريقة البحث.
--
لجمالية الشكل :
1 - بإمكانك جعل الـ ListView1 مخفية . والـ ListView2 هي الظاهرة فقط وهي من تقوم بعرض
2 - بعد كود التعبئة من قاعدة البيانات أكتب الكود التالي ليقوم بتعبئة الـ ListView2 من الـ ListView1 :
كود :
SearchWord1(TextBox1.Text, ListView1, ListView2)