تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] كيفية فلترة ليست فيو vb net Multiple Column Filter listview
#1
السلام عليكم

اريد افكار او طرق او كود يعمل فلترة لعناصر ليست فيو فى اكتر من عمود

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

الاسم - السن - الوظيفة - المرتب

كيف يتم عمل فلترة فى الاسم والراتب معا ؟

انا اقدر اعملها بشروط if

ولكن ستكون عملية الفلترة بطيئة جدا وليست جيدة على ما اعتقد خصوصا ان المشروع كبير وايضا عناصر الليست فيو سوف تكون كثيرة

بانتظار ابداعتكم
الرد
تم الشكر بواسطة:
#2
للرفع للرفع للرفع للرفع
الرد
تم الشكر بواسطة:
#3
للرفع للرفع للرفع للرفع
الرد
تم الشكر بواسطة:
#4
السلام عليكم

يمكن استغلال البحث في مصدر البيانات الذي قمت بتعبئة الليست فيو منه، والبحث فيه بشكل أسرع من قراءة خلايا الليست فيو.

وعموما هذا طريقة البحث في الليست فيو ويعيد مصفوفة من مجموعة أسطر،
البحث في العمود الأول نصا (الاسم مثلا) والعمود الرابع رقما (الراتب مثلا)
كود :
Dim itms() As ListViewItem =
    Me.ListView1.Items.Cast(Of ListViewItem).
    Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
              And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).ToArray

وهذا الكود ليعيد سطر واحد فقط
كود :
Dim itm As ListViewItem =
    Me.ListView1.Items.Cast(Of ListViewItem).
    Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
              And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).FirstOrDefault
الرد
تم الشكر بواسطة:
#5
(23-01-17, 02:12 AM)مساعدة كتب : السلام عليكم

يمكن استغلال البحث في مصدر البيانات الذي قمت بتعبئة الليست فيو منه، والبحث فيه بشكل أسرع من قراءة خلايا الليست فيو.

وعموما هذا طريقة البحث في الليست فيو ويعيد مصفوفة من مجموعة أسطر،
البحث في العمود الأول نصا (الاسم مثلا) والعمود الرابع رقما (الراتب مثلا)
كود :
Dim itms() As ListViewItem =
   Me.ListView1.Items.Cast(Of ListViewItem).
   Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
             And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).ToArray

وهذا الكود ليعيد سطر واحد فقط
كود :
Dim itm As ListViewItem =
   Me.ListView1.Items.Cast(Of ListViewItem).
   Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
             And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).FirstOrDefault
شكرا لك اخى بارك الله فيك

ولكن كيف الاستخدام ليتم اظهار العناصر المطابقة للبحث فى الليست فيو واخفاء باقى العناصر

وكيف الغى هذا البحث لكى يظهر كل العناصر كما كانت؟
الرد
تم الشكر بواسطة:
#6
أخبرتك سابقاً أن إجراء البحث سيسهل العملية وكثيراً ويسرعها في حالة البيانات الكثيرة.

في الوضع السابق يجب الاحتفاظ بالاسطر قبل إجراء البحث، وستم البحث على الاسطر المحتفظ بها

هنا يتم إنشاء متغير للإحتفاط بالاسطر الأصلية
كود :
Private ListView1Items() As ListViewItem

هنا كيفية تعبئة المتغير السابق بالأسطر الأصلية
كود :
ListView1Items = Me.ListView1.Items.Cast(Of ListViewItem).Select(Function(x) x).ToArray

هنا عملية البحث كما ذكرتها في مشاركتي السابقة مع عدم ظهور باقي العناصر
كود :
Dim itms() As ListViewItem = ListView1Items.
    Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
              And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).ToArray

Me.ListView1.Items.Clear()
Me.ListView1.Items.AddRange(itms)

هنا إعادة العناصر الأصلية للأداة
كود :
Me.ListView1.Items.Clear()
Me.ListView1.Items.AddRange(ListView1Items)


والوضع مختلف وأسهل في حال التعامل مع مصدر البيانات التي تمت تعبئة أداة الليست فيو منه.


في حالة وجود سؤال آخر الرجاء وضع مشروعك ليتم إيجاد الحل المناسب.
الرد
تم الشكر بواسطة: الماجيك مسعد
#7
(23-01-17, 10:54 AM)مساعدة كتب : أخبرتك سابقاً أن إجراء البحث سيسهل العملية وكثيراً ويسرعها في حالة البيانات الكثيرة.

في الوضع السابق يجب الاحتفاظ بالاسطر قبل إجراء البحث، وستم البحث على الاسطر المحتفظ بها

هنا يتم إنشاء متغير للإحتفاط بالاسطر الأصلية
كود :
Private ListView1Items() As ListViewItem

هنا كيفية تعبئة المتغير السابق بالأسطر الأصلية
كود :
ListView1Items = Me.ListView1.Items.Cast(Of ListViewItem).Select(Function(x) x).ToArray

هنا عملية البحث كما ذكرتها في مشاركتي السابقة مع عدم ظهور باقي العناصر
كود :
Dim itms() As ListViewItem = ListView1Items.
   Where(Function(i) i.SubItems(0).Text.Equals(TextBox1.Text) _
             And Val(i.SubItems(3).Text).Equals(Val(TextBox2.Text))).ToArray

Me.ListView1.Items.Clear()
Me.ListView1.Items.AddRange(itms)

هنا إعادة العناصر الأصلية للأداة
كود :
Me.ListView1.Items.Clear()
Me.ListView1.Items.AddRange(ListView1Items)


والوضع مختلف وأسهل في حال التعامل مع مصدر البيانات التي تمت تعبئة أداة الليست فيو منه.


في حالة وجود سؤال آخر الرجاء وضع مشروعك ليتم إيجاد الحل المناسب.

اقسم بالله العظيم انك شخص مبدع

وتقريبا انت الشخص الوحيد الى فهمت ما اريد بالظبط

للعلم انى سئلت فى اكتر من منتدى اخر ولم يفهم قصدى اى شخص رغم انى وضحت لهم اكتر من هذا الموضوع ولكن دون جدوى

ولم يفهم قصدى سواك

+ انى ملاحظ مساعدتك البرئية فى كامل المنتدى ولكامل الاعضاء دون اى مقابل ولوجه الله فقط

اهنئك اخى على ذلك وربنا يذيدك من علمه

وباذن الله قريبا اشوفك من اداريين المنتدى


بارك الله فيك
الرد
تم الشكر بواسطة:
#8
بارك الله فيك، والحمد لله رب العالمين،
لا أريد أي شيء سواء من المنتدى أو الأعضاء،
فإني محتسب الأجر عند الله تعالى فقط صدقة عن والدي وعن نفسي.
الرد
تم الشكر بواسطة: الماجيك مسعد
#9
ايه افضل كود يتحقق ان العمود فيه قيمة وانه مش فاضى؟

مثلا فى عمود رقم 7

ازاى اتحقق ان الصف رقم 1 فى العمود رقم 7 فيه قيمة وليس فارغ؟
الرد
تم الشكر بواسطة:
#10
تفضل الكود
كود :
' Items الصف
' SubItems العمود
' الصف والعمود يبدأ بالرقم صفر
' يعني العمود الاول يكون العمود رقم صفر والعمود الثاني يكون العمود رقم واحد وهكذا في الصف

Dim hasValue As Boolean = ListView1.Items(1).SubItems(7).Text.Trim <> ""
هنا سيحتوي hasValue إما True وتعني فارغ أو False وتعني ليس فارغ
الرد
تم الشكر بواسطة: الماجيك مسعد


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] كيفية استخدام Newtonsoft.Json باصدارين مختلفين في solution with multiple projects الماجيك مسعد 3 68 09-10-18, 08:33 PM
آخر رد: الماجيك مسعد
  حذف صف من داتا ليست تناسيم 3 53 07-10-18, 06:45 AM
آخر رد: rnmr
  [VB.NET] البحث في listview trakktour 2 73 02-10-18, 01:30 AM
آخر رد: trakktour
  [VB.NET] سؤال حول listview trakktour 3 99 30-09-18, 02:55 AM
آخر رد: ابراهيم ايبو
  [سؤال] مشكلة في الكود في كيفية البحث داخل الداتا جريد من خلال صندوق نصي ؟ dametucorazon 3 166 23-09-18, 11:27 AM
آخر رد: elgokr
  كيفية التعامل عند حفظ سطر بقيمة فارغة وظهور رسالة خطأ؟ [ تم الحل ] Hazem1 2 101 23-09-18, 11:23 AM
آخر رد: elgokr
  كيفية عمل كشف حساب الخزينة لجرد النقدية ABDELLAH20181 22 738 21-09-18, 03:29 PM
آخر رد: ABDELLAH20181
  كيفية عرض التاريخ الهجري المتألق9 14 309 18-09-18, 01:38 PM
آخر رد: المتألق9
Exclamation [VB.NET] طلب :- كيفية التعامل مع الكوكيز DK-x 3 106 18-09-18, 12:46 PM
آخر رد: elgokr
Exclamation [سؤال] كيفية التعامل مع قاعدة البيانات DK-x 3 101 13-09-18, 05:03 PM
آخر رد: elgokr

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم